{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 264,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "import matplotlib.pyplot as plt\n",
    "import os\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from tensorflow.keras.utils import to_categorical\n",
    "from tensorflow.keras.models import Sequential,load_model\n",
    "from tensorflow.keras.layers import LSTM,Dense,Activation,Dropout,Flatten,Conv1D,Conv2D,Reshape,RepeatVector,MaxPooling1D,concatenate,Lambda,Multiply,Embedding,Permute,BatchNormalization\n",
    "from tensorflow.keras.callbacks import EarlyStopping\n",
    "from tensorflow.keras import optimizers,metrics\n",
    "from tensorflow.keras import backend as K\n",
    "from tensorflow.keras import Input, Model\n",
    "from tensorflow import keras\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "from sklearn.preprocessing import OneHotEncoder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 274,
   "metadata": {},
   "outputs": [],
   "source": [
    "def read_data():\n",
    "    file_dir = './data/train_data_lstm_.csv'\n",
    "    all_data_frame = pd.read_csv(file_dir)\n",
    "    #all_data_frame = all_data_frame[all_data_frame['ycsb']=='202106150038GF']\n",
    "    #selected_features = ['weather','hour', 'gfrl','cur_a','cur_b','cur_c','vol_a','vol_b','vol_c','p','szgl','low_tp', 'high_tp', 'avg_tp', 'wind','fdgl']\n",
    "    #all_data_frame[selected_features]\n",
    "    return all_data_frame\n",
    "\n",
    "def one_hot(data):\n",
    "    result = pd.get_dummies(data['weather'], sparse=True)\n",
    "    return result\n",
    "\n",
    "def scale(all_data_df):\n",
    "    selected_features = ['hour', 'gfrl','cur_a','cur_b','cur_c','vol_a','vol_b','vol_c','p','szgl','low_tp', 'high_tp', 'avg_tp', 'wind']\n",
    "    scaled_data = all_data_df[selected_features]\n",
    "    #scaler = MinMaxScaler()\n",
    "    #scaled_data = pd.DataFrame(scaler.fit_transform(scaled_data),columns=scaled_data.keys())\n",
    "    return scaled_data\n",
    "\n",
    "def inverse_scale(scaler,res):\n",
    "    pre_res  =scaler.inverse_transform(res)\n",
    "    return pre_res\n",
    "\n",
    "def slice_window(x_train,y_train,step):\n",
    "    X,y=[],[] \n",
    "    for i in range(0,len(x_train)-step,1): \n",
    "        end = i + step\n",
    "        oneX = x_train[i:end,:]\n",
    "        oney = y_train[end]\n",
    "        X.append(oneX)\n",
    "        y.append(oney)\n",
    "    return np.array(X),np.array(y)\n",
    "\n",
    "def data_transform(onehot_data,scale_data,all_data_df):\n",
    "    #充值索引，合并数据\n",
    "    onehot_data = onehot_data.reset_index()\n",
    "    scale_data = scale_data.reset_index()\n",
    "    merge_data = pd.concat([onehot_data,scale_data], axis=1)\n",
    "    X_train = merge_data.drop('index',axis=1)\n",
    "    y = all_data_df['fdgl']\n",
    "    \n",
    "    #slice_window\n",
    "    step = 6\n",
    "    x_y = slice_window(np.array(X_train),np.array(y),step)\n",
    "    print(x_y[0].shape,x_y[1].shape)\n",
    "    X_train, y = x_y[0], x_y[1]\n",
    "    \n",
    "    #reshape参数\n",
    "#     sample = int(X_train.shape[0])//1\n",
    "#     time_step = 1\n",
    "#     feature_num = X_train.shape[1]\n",
    "#     #reshape\n",
    "#     X_train=X_train.values.reshape(sample,time_step,feature_num)\n",
    "#     y = y.values.reshape(sample,time_step)\n",
    "#     print('X:',X_train.shape)\n",
    "#     print('Y:',y.shape)\n",
    "    \n",
    "    #分割验证集\n",
    "    X_train,X_val,y_train,y_val=train_test_split(X_train,y,test_size=0.2, random_state=333)\n",
    "    \n",
    "    \n",
    "    return [X_train,X_val,y_train,y_val]\n",
    "\n",
    "def data_transform_(onehot_data,all_data_df):\n",
    "    onehot_data = onehot_data.reset_index()\n",
    "    merge_data = pd.concat([onehot_data,all_data_df], axis=1)\n",
    "    X_train = merge_data.drop('index',axis=1)\n",
    "    X_train = X_train.drop('weather',axis=1)\n",
    "    X_train = X_train.drop('fdgl',axis=1)\n",
    "    y = all_data_df['fdgl']\n",
    "    \n",
    "    #slice_window\n",
    "    step = 6\n",
    "    x_y = slice_window(np.array(X_train),np.array(y),step)\n",
    "    print(x_y[0].shape,x_y[1].shape)\n",
    "    X_train, y = x_y[0], x_y[1]\n",
    "    \n",
    "    #分割验证集\n",
    "    X_train,X_val,y_train,y_val=train_test_split(X_train,y,test_size=0.2, random_state=333)\n",
    "    print(X_train.shape,y_train.shape)\n",
    "    return [X_train,X_val,y_train,y_val]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 275,
   "metadata": {},
   "outputs": [],
   "source": [
    "def attention_block_3(inputs,feature_cnt,dim):\n",
    "    a = Flatten()(inputs)\n",
    "    a = Dense(feature_cnt*dim,activation='softmax')(a)\n",
    "    a = Reshape((dim,feature_cnt,))(a)\n",
    "    print(a)\n",
    "    a = Lambda(lambda x: K.sum(x, axis=1), name='attention')(a)\n",
    "    print(a)\n",
    "    a = RepeatVector(dim)(a)\n",
    "    #a = Permute((2, 1), name='attention_vec')(a)\n",
    "    print(a)\n",
    "    attention_out = Multiply()([inputs, a])\n",
    "    return attention_out\n",
    "\n",
    "def build_model(feature_cnt,feature_max,model_type,merge_type,dim):\n",
    "    K.clear_session() #清除之前的模型，省得压满内存\n",
    "    inputs = Input(shape=(dim,feature_cnt))\n",
    "    \n",
    "    #embd = Embedding(300,dim)(inputs)\n",
    "    \n",
    "    embd = BatchNormalization()(inputs)\n",
    "    \n",
    "    # x = LSTM(18,return_sequences=False)(inputs)\n",
    "    \n",
    "    # x = Dense(feature_cnt,activation='relu',kernel_initializer='uniform')(x)\n",
    "\n",
    "    x = attention_block_3(embd,feature_cnt,dim)\n",
    "    \n",
    "    x = Flatten()(x)\n",
    "    \n",
    "    x = RepeatVector(1)(x)\n",
    "    \n",
    "    x = LSTM(128,return_sequences=True)(x)\n",
    "    \n",
    "    x = LSTM(64,return_sequences=False)(x)\n",
    "    \n",
    "    x = Dense(32,activation='relu',kernel_initializer='uniform')(x)\n",
    "    \n",
    "    outputs = Dense(1,activation='relu',kernel_initializer='uniform')(x)\n",
    "    \n",
    "    model = Model(inputs=inputs, outputs=outputs)\n",
    "    \n",
    "    model.summary()\n",
    "    \n",
    "    return model\n",
    "\n",
    "def get_layer_output(model,layer_name,inputs):\n",
    "    layer = Model(inputs=model.input,outputs=model.get_layer(layer_name).output)\n",
    "    layer_out = layer.predict(inputs)\n",
    "#    print(layer_out[0])\n",
    "    return np.mean(layer_out,axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 276,
   "metadata": {},
   "outputs": [],
   "source": [
    "def draw(history):\n",
    "    from matplotlib import pyplot\n",
    "    pyplot.plot(history.history['loss'], label='train')\n",
    "    pyplot.plot(history.history['val_loss'], label='test')\n",
    "    pyplot.legend()\n",
    "    pyplot.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 281,
   "metadata": {},
   "outputs": [],
   "source": [
    "def train(train_x,train_y,test_x,test_y,feature_cnt,feature_max,model_type,epochs,merge_type,dim):\n",
    "    model = build_model(feature_cnt,feature_max,model_type,merge_type,dim)\n",
    "    # 优化器\n",
    "    adam = optimizers.Adam(learning_rate = 0.0001)\n",
    "    \n",
    "    #early_stop\n",
    "    early_stopping = EarlyStopping(monitor='val_loss', patience=50, verbose=2)\n",
    "    \n",
    "    model.compile(loss='mse', optimizer='adam')\n",
    "    history = model.fit(train_x,train_y\n",
    "          ,batch_size=64\n",
    "          ,epochs = epochs\n",
    "          ,validation_data = (test_x,test_y)\n",
    "          ,callbacks=[early_stopping]\n",
    "          ,shuffle=False\n",
    "          #,validation_split=0.1\n",
    "    )\n",
    "    draw(history)\n",
    "    if model_type != 'basic':\n",
    "        att = get_layer_output(model,'attention',test_x)\n",
    "        print(att)\n",
    "        COLS = ['duoyin',\n",
    "                 'qing',\n",
    "                 'yin',\n",
    "                 'yu',\n",
    "                 'hour',\n",
    "                 'gfrl',\n",
    "                 'cur_a',\n",
    "                 'cur_b',\n",
    "                 'cur_c',\n",
    "                 'vol_a',\n",
    "                 'vol_b',\n",
    "                 'vol_c',\n",
    "                 'p',\n",
    "                 'szgl',\n",
    "                 'low_tp',\n",
    "                 'high_tp',\n",
    "                 'avg_tp',\n",
    "                 'wind']\n",
    "        #plt.bar(np.arange(feature_cnt),att)\n",
    "        from matplotlib import pyplot\n",
    "        pyplot.figure(figsize=(20,5))\n",
    "        plt.bar(COLS,att)\n",
    "        print(np.sum(att))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 282,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(25536, 4)\n",
      "(25530, 6, 18) (25530,)\n",
      "Wall time: 141 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "if __name__=='__main__':\n",
    "    #读取原数据\n",
    "    all_data_df = read_data()\n",
    "    #非数值数据onehot处理\n",
    "    onehot_data = one_hot(all_data_df)\n",
    "    print(onehot_data.shape)\n",
    "    #数值数据归一化处理\n",
    "    scale_data = scale(all_data_df)\n",
    "    #拼接，shape转换，分割\n",
    "    train_val_data = data_transform(onehot_data,scale_data,all_data_df)\n",
    "    #train_val_data = data_transform_(onehot_data,all_data_df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 283,
   "metadata": {},
   "outputs": [],
   "source": [
    "#train_x,train_y,test_x,test_y = generate_data(datasize,feature_cnt,feature_key,feature_min,feature_max,data_split)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 279,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "datasize = 10000 #数据规模\n",
    "feature_cnt = 18 #特征数量\n",
    "feature_key = 3 #人为设得的重要特征，期望注意力机制能正确捕捉到。feature_key<=feature_cnt\n",
    "\n",
    "feature_range = 20 #特征的值域\n",
    "feature_min = 0 #特征最小值\n",
    "feature_max = feature_range-1 #特征最大值\n",
    "\n",
    "data_split = 0.8 #数据集划分比例\n",
    "epochs = 1000 #训练轮数\n",
    "dim = 6 #time step\n",
    "\n",
    "#train_x,train_y,test_x,test_y = generate_data(datasize,feature_cnt,feature_key,feature_min,feature_max,data_split)\n",
    "train_x,test_x,train_y,test_y = train_val_data[0],train_val_data[1],train_val_data[2],train_val_data[3]\n",
    "\n",
    "train_x = K.cast_to_floatx(train_x)\n",
    "train_y = K.cast_to_floatx(train_y)\n",
    "test_x = K.cast_to_floatx(test_x)\n",
    "test_y = K.cast_to_floatx(test_y)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 316,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "KerasTensor(type_spec=TensorSpec(shape=(None, 6, 19), dtype=tf.float32, name=None), name='reshape/Reshape:0', description=\"created by layer 'reshape'\")\n",
      "KerasTensor(type_spec=TensorSpec(shape=(None, 19), dtype=tf.float32, name=None), name='attention/Sum:0', description=\"created by layer 'attention'\")\n",
      "KerasTensor(type_spec=TensorSpec(shape=(None, 6, 19), dtype=tf.float32, name=None), name='repeat_vector/Tile:0', description=\"created by layer 'repeat_vector'\")\n",
      "Model: \"model\"\n",
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_1 (InputLayer)            [(None, 6, 19)]      0                                            \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization (BatchNorma (None, 6, 19)        76          input_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "flatten (Flatten)               (None, 114)          0           batch_normalization[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "dense (Dense)                   (None, 114)          13110       flatten[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "reshape (Reshape)               (None, 6, 19)        0           dense[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "attention (Lambda)              (None, 19)           0           reshape[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "repeat_vector (RepeatVector)    (None, 6, 19)        0           attention[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply (Multiply)             (None, 6, 19)        0           batch_normalization[0][0]        \n",
      "                                                                 repeat_vector[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "flatten_1 (Flatten)             (None, 114)          0           multiply[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "repeat_vector_1 (RepeatVector)  (None, 1, 114)       0           flatten_1[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "lstm (LSTM)                     (None, 1, 128)       124416      repeat_vector_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "lstm_1 (LSTM)                   (None, 64)           49408       lstm[0][0]                       \n",
      "__________________________________________________________________________________________________\n",
      "dense_1 (Dense)                 (None, 32)           2080        lstm_1[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "dense_2 (Dense)                 (None, 1)            33          dense_1[0][0]                    \n",
      "==================================================================================================\n",
      "Total params: 189,123\n",
      "Trainable params: 189,085\n",
      "Non-trainable params: 38\n",
      "__________________________________________________________________________________________________\n",
      "Epoch 1/1000\n",
      "320/320 [==============================] - 5s 7ms/step - loss: 0.8609 - val_loss: 0.3188\n",
      "Epoch 2/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.2193 - val_loss: 0.1455\n",
      "Epoch 3/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1499 - val_loss: 0.1280\n",
      "Epoch 4/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1335 - val_loss: 0.1161\n",
      "Epoch 5/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1217 - val_loss: 0.1067\n",
      "Epoch 6/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1124 - val_loss: 0.0988\n",
      "Epoch 7/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.1047 - val_loss: 0.0918\n",
      "Epoch 8/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0979 - val_loss: 0.0851\n",
      "Epoch 9/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0915 - val_loss: 0.0788\n",
      "Epoch 10/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0855 - val_loss: 0.0732\n",
      "Epoch 11/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0800 - val_loss: 0.0682\n",
      "Epoch 12/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0749 - val_loss: 0.0639\n",
      "Epoch 13/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0702 - val_loss: 0.0600\n",
      "Epoch 14/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0658 - val_loss: 0.0565\n",
      "Epoch 15/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0619 - val_loss: 0.0535\n",
      "Epoch 16/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0584 - val_loss: 0.0509\n",
      "Epoch 17/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0553 - val_loss: 0.0487\n",
      "Epoch 18/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0527 - val_loss: 0.0468\n",
      "Epoch 19/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0504 - val_loss: 0.0453\n",
      "Epoch 20/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0485 - val_loss: 0.0440\n",
      "Epoch 21/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0469 - val_loss: 0.0429\n",
      "Epoch 22/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0456 - val_loss: 0.0420\n",
      "Epoch 23/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0445 - val_loss: 0.0413\n",
      "Epoch 24/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0436 - val_loss: 0.0406\n",
      "Epoch 25/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0427 - val_loss: 0.0400\n",
      "Epoch 26/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0420 - val_loss: 0.0395\n",
      "Epoch 27/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0413 - val_loss: 0.0391\n",
      "Epoch 28/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0407 - val_loss: 0.0386\n",
      "Epoch 29/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0401 - val_loss: 0.0382\n",
      "Epoch 30/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0395 - val_loss: 0.0377\n",
      "Epoch 31/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0389 - val_loss: 0.0373\n",
      "Epoch 32/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0384 - val_loss: 0.0368\n",
      "Epoch 33/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0379 - val_loss: 0.0363\n",
      "Epoch 34/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0373 - val_loss: 0.0359\n",
      "Epoch 35/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0368 - val_loss: 0.0354\n",
      "Epoch 36/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0363 - val_loss: 0.0349\n",
      "Epoch 37/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0358 - val_loss: 0.0345\n",
      "Epoch 38/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0353 - val_loss: 0.0341\n",
      "Epoch 39/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0348 - val_loss: 0.0337\n",
      "Epoch 40/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0344 - val_loss: 0.0334\n",
      "Epoch 41/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0340 - val_loss: 0.0332\n",
      "Epoch 42/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0336 - val_loss: 0.0329\n",
      "Epoch 43/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0332 - val_loss: 0.0327\n",
      "Epoch 44/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0329 - val_loss: 0.0325\n",
      "Epoch 45/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0325 - val_loss: 0.0323\n",
      "Epoch 46/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0322 - val_loss: 0.0321\n",
      "Epoch 47/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0319 - val_loss: 0.0319\n",
      "Epoch 48/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0316 - val_loss: 0.0318\n",
      "Epoch 49/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0313 - val_loss: 0.0316\n",
      "Epoch 50/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0311 - val_loss: 0.0315\n",
      "Epoch 51/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0308 - val_loss: 0.0314\n",
      "Epoch 52/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0306 - val_loss: 0.0312\n",
      "Epoch 53/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0303 - val_loss: 0.0311\n",
      "Epoch 54/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0301 - val_loss: 0.0310\n",
      "Epoch 55/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0299 - val_loss: 0.0309\n",
      "Epoch 56/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0296 - val_loss: 0.0308\n",
      "Epoch 57/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0294 - val_loss: 0.0307\n",
      "Epoch 58/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0292 - val_loss: 0.0306\n",
      "Epoch 59/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0290 - val_loss: 0.0305\n",
      "Epoch 60/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0288 - val_loss: 0.0304\n",
      "Epoch 61/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0286 - val_loss: 0.0303\n",
      "Epoch 62/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0284 - val_loss: 0.0302\n",
      "Epoch 63/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0283 - val_loss: 0.0302\n",
      "Epoch 64/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0281 - val_loss: 0.0301\n",
      "Epoch 65/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0279 - val_loss: 0.0300\n",
      "Epoch 66/1000\n",
      "320/320 [==============================] - ETA: 0s - loss: 0.027 - 2s 5ms/step - loss: 0.0277 - val_loss: 0.0299\n",
      "Epoch 67/1000\n",
      "320/320 [==============================] - ETA: 0s - loss: 0.027 - 2s 5ms/step - loss: 0.0276 - val_loss: 0.0299\n",
      "Epoch 68/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0274 - val_loss: 0.0298\n",
      "Epoch 69/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0272 - val_loss: 0.0297\n",
      "Epoch 70/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0271 - val_loss: 0.0297\n",
      "Epoch 71/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0269 - val_loss: 0.0296\n",
      "Epoch 72/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0268 - val_loss: 0.0295\n",
      "Epoch 73/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0266 - val_loss: 0.0295\n",
      "Epoch 74/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0265 - val_loss: 0.0294\n",
      "Epoch 75/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0263 - val_loss: 0.0294\n",
      "Epoch 76/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0262 - val_loss: 0.0293\n",
      "Epoch 77/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0261 - val_loss: 0.0293\n",
      "Epoch 78/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0259 - val_loss: 0.0292\n",
      "Epoch 79/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0258 - val_loss: 0.0291\n",
      "Epoch 80/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0257 - val_loss: 0.0291\n",
      "Epoch 81/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0255 - val_loss: 0.0290\n",
      "Epoch 82/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0254 - val_loss: 0.0290\n",
      "Epoch 83/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0253 - val_loss: 0.0289\n",
      "Epoch 84/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0252 - val_loss: 0.0288\n",
      "Epoch 85/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0250 - val_loss: 0.0288\n",
      "Epoch 86/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0249 - val_loss: 0.0287\n",
      "Epoch 87/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0248 - val_loss: 0.0287\n",
      "Epoch 88/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0247 - val_loss: 0.0286\n",
      "Epoch 89/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0246 - val_loss: 0.0285\n",
      "Epoch 90/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0244 - val_loss: 0.0285\n",
      "Epoch 91/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0243 - val_loss: 0.0284\n",
      "Epoch 92/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0242 - val_loss: 0.0284\n",
      "Epoch 93/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0241 - val_loss: 0.0283\n",
      "Epoch 94/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0240 - val_loss: 0.0282\n",
      "Epoch 95/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0239 - val_loss: 0.0282\n",
      "Epoch 96/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0238 - val_loss: 0.0281\n",
      "Epoch 97/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0237 - val_loss: 0.0281\n",
      "Epoch 98/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0236 - val_loss: 0.0280\n",
      "Epoch 99/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0235 - val_loss: 0.0279\n",
      "Epoch 100/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0234 - val_loss: 0.0279\n",
      "Epoch 101/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0232 - val_loss: 0.0278\n",
      "Epoch 102/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0231 - val_loss: 0.0278\n",
      "Epoch 103/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0230 - val_loss: 0.0277\n",
      "Epoch 104/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0229 - val_loss: 0.0277\n",
      "Epoch 105/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0228 - val_loss: 0.0276\n",
      "Epoch 106/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0227 - val_loss: 0.0275\n",
      "Epoch 107/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0227 - val_loss: 0.0275\n",
      "Epoch 108/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0226 - val_loss: 0.0274\n",
      "Epoch 109/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0225 - val_loss: 0.0274\n",
      "Epoch 110/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0224 - val_loss: 0.0273\n",
      "Epoch 111/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0223 - val_loss: 0.0273\n",
      "Epoch 112/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0222 - val_loss: 0.0272\n",
      "Epoch 113/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0221 - val_loss: 0.0271\n",
      "Epoch 114/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0220 - val_loss: 0.0271\n",
      "Epoch 115/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0219 - val_loss: 0.0270\n",
      "Epoch 116/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0218 - val_loss: 0.0270\n",
      "Epoch 117/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0217 - val_loss: 0.0269\n",
      "Epoch 118/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0216 - val_loss: 0.0268\n",
      "Epoch 119/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0215 - val_loss: 0.0268\n",
      "Epoch 120/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0214 - val_loss: 0.0267\n",
      "Epoch 121/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0214 - val_loss: 0.0266\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 122/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0213 - val_loss: 0.0266\n",
      "Epoch 123/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0212 - val_loss: 0.0265\n",
      "Epoch 124/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0211 - val_loss: 0.0264\n",
      "Epoch 125/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0210 - val_loss: 0.0263\n",
      "Epoch 126/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0209 - val_loss: 0.0263\n",
      "Epoch 127/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0208 - val_loss: 0.0262\n",
      "Epoch 128/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0208 - val_loss: 0.0261\n",
      "Epoch 129/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0207 - val_loss: 0.0261\n",
      "Epoch 130/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0206 - val_loss: 0.0260\n",
      "Epoch 131/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0205 - val_loss: 0.0259\n",
      "Epoch 132/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0204 - val_loss: 0.0258\n",
      "Epoch 133/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0204 - val_loss: 0.0258\n",
      "Epoch 134/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0203 - val_loss: 0.0257\n",
      "Epoch 135/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0202 - val_loss: 0.0256\n",
      "Epoch 136/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0201 - val_loss: 0.0255\n",
      "Epoch 137/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0201 - val_loss: 0.0254\n",
      "Epoch 138/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0200 - val_loss: 0.0254\n",
      "Epoch 139/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0199 - val_loss: 0.0253\n",
      "Epoch 140/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0198 - val_loss: 0.0252\n",
      "Epoch 141/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0197 - val_loss: 0.0251\n",
      "Epoch 142/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0197 - val_loss: 0.0251\n",
      "Epoch 143/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0196 - val_loss: 0.0250\n",
      "Epoch 144/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0195 - val_loss: 0.0249\n",
      "Epoch 145/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0195 - val_loss: 0.0249\n",
      "Epoch 146/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0194 - val_loss: 0.0248\n",
      "Epoch 147/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0193 - val_loss: 0.0247\n",
      "Epoch 148/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0192 - val_loss: 0.0247\n",
      "Epoch 149/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0192 - val_loss: 0.0246\n",
      "Epoch 150/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0191 - val_loss: 0.0245\n",
      "Epoch 151/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0190 - val_loss: 0.0245\n",
      "Epoch 152/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0189 - val_loss: 0.0244\n",
      "Epoch 153/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0189 - val_loss: 0.0244\n",
      "Epoch 154/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0188 - val_loss: 0.0243\n",
      "Epoch 155/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0187 - val_loss: 0.0242\n",
      "Epoch 156/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0187 - val_loss: 0.0242\n",
      "Epoch 157/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0186 - val_loss: 0.0241\n",
      "Epoch 158/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0185 - val_loss: 0.0241\n",
      "Epoch 159/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0185 - val_loss: 0.0240\n",
      "Epoch 160/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0184 - val_loss: 0.0240\n",
      "Epoch 161/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0183 - val_loss: 0.0240\n",
      "Epoch 162/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0183 - val_loss: 0.0239\n",
      "Epoch 163/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0182 - val_loss: 0.0239\n",
      "Epoch 164/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0181 - val_loss: 0.0238\n",
      "Epoch 165/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0181 - val_loss: 0.0238\n",
      "Epoch 166/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0180 - val_loss: 0.0238\n",
      "Epoch 167/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0180 - val_loss: 0.0237\n",
      "Epoch 168/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0179 - val_loss: 0.0237\n",
      "Epoch 169/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0178 - val_loss: 0.0236\n",
      "Epoch 170/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0178 - val_loss: 0.0236\n",
      "Epoch 171/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0177 - val_loss: 0.0236\n",
      "Epoch 172/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0177 - val_loss: 0.0236\n",
      "Epoch 173/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0176 - val_loss: 0.0235\n",
      "Epoch 174/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0176 - val_loss: 0.0235\n",
      "Epoch 175/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0175 - val_loss: 0.0235\n",
      "Epoch 176/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0175 - val_loss: 0.0234\n",
      "Epoch 177/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0174 - val_loss: 0.0234\n",
      "Epoch 178/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0174 - val_loss: 0.0234\n",
      "Epoch 179/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0173 - val_loss: 0.0233\n",
      "Epoch 180/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0173 - val_loss: 0.0233\n",
      "Epoch 181/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0172 - val_loss: 0.0233\n",
      "Epoch 182/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0172 - val_loss: 0.0233\n",
      "Epoch 183/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0171 - val_loss: 0.0233\n",
      "Epoch 184/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0171 - val_loss: 0.0232\n",
      "Epoch 185/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0170 - val_loss: 0.0232\n",
      "Epoch 186/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0170 - val_loss: 0.0232\n",
      "Epoch 187/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0169 - val_loss: 0.0232\n",
      "Epoch 188/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0169 - val_loss: 0.0231\n",
      "Epoch 189/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0168 - val_loss: 0.0231\n",
      "Epoch 190/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0168 - val_loss: 0.0231\n",
      "Epoch 191/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0167 - val_loss: 0.0231\n",
      "Epoch 192/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0167 - val_loss: 0.0231\n",
      "Epoch 193/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0166 - val_loss: 0.0231\n",
      "Epoch 194/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0166 - val_loss: 0.0230\n",
      "Epoch 195/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0166 - val_loss: 0.0230\n",
      "Epoch 196/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0165 - val_loss: 0.0230\n",
      "Epoch 197/1000\n",
      "320/320 [==============================] - 2s 6ms/step - loss: 0.0165 - val_loss: 0.0230\n",
      "Epoch 198/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0164 - val_loss: 0.0230\n",
      "Epoch 199/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0164 - val_loss: 0.0230\n",
      "Epoch 200/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0163 - val_loss: 0.0229\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 201/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0163 - val_loss: 0.0229\n",
      "Epoch 202/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0162 - val_loss: 0.0229\n",
      "Epoch 203/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0162 - val_loss: 0.0230\n",
      "Epoch 204/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0162 - val_loss: 0.0230\n",
      "Epoch 205/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0161 - val_loss: 0.0229\n",
      "Epoch 206/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0161 - val_loss: 0.0229\n",
      "Epoch 207/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0161 - val_loss: 0.0229\n",
      "Epoch 208/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0160 - val_loss: 0.0230\n",
      "Epoch 209/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0160 - val_loss: 0.0231\n",
      "Epoch 210/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0159 - val_loss: 0.0231\n",
      "Epoch 211/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0159 - val_loss: 0.0230\n",
      "Epoch 212/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0158 - val_loss: 0.0229\n",
      "Epoch 213/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0158 - val_loss: 0.0229\n",
      "Epoch 214/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0158 - val_loss: 0.0230\n",
      "Epoch 215/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0157 - val_loss: 0.0232\n",
      "Epoch 216/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0157 - val_loss: 0.0231\n",
      "Epoch 217/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0157 - val_loss: 0.0229\n",
      "Epoch 218/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0156 - val_loss: 0.0229\n",
      "Epoch 219/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0156 - val_loss: 0.0229\n",
      "Epoch 220/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0155 - val_loss: 0.0231\n",
      "Epoch 221/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0155 - val_loss: 0.0231\n",
      "Epoch 222/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0155 - val_loss: 0.0230\n",
      "Epoch 223/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0154 - val_loss: 0.0229\n",
      "Epoch 224/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0154 - val_loss: 0.0229\n",
      "Epoch 225/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0153 - val_loss: 0.0230\n",
      "Epoch 226/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0153 - val_loss: 0.0232\n",
      "Epoch 227/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0153 - val_loss: 0.0231\n",
      "Epoch 228/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0152 - val_loss: 0.0230\n",
      "Epoch 229/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0152 - val_loss: 0.0229\n",
      "Epoch 230/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0152 - val_loss: 0.0230\n",
      "Epoch 231/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0151 - val_loss: 0.0232\n",
      "Epoch 232/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0151 - val_loss: 0.0232\n",
      "Epoch 233/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0151 - val_loss: 0.0231\n",
      "Epoch 234/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0150 - val_loss: 0.0230\n",
      "Epoch 235/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0150 - val_loss: 0.0230\n",
      "Epoch 236/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0150 - val_loss: 0.0231\n",
      "Epoch 237/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0149 - val_loss: 0.0233\n",
      "Epoch 238/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0149 - val_loss: 0.0232\n",
      "Epoch 239/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0149 - val_loss: 0.0231\n",
      "Epoch 240/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0148 - val_loss: 0.0230\n",
      "Epoch 241/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0148 - val_loss: 0.0232\n",
      "Epoch 242/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0148 - val_loss: 0.0234\n",
      "Epoch 243/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0147 - val_loss: 0.0234\n",
      "Epoch 244/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0147 - val_loss: 0.0233\n",
      "Epoch 245/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0147 - val_loss: 0.0232\n",
      "Epoch 246/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0146 - val_loss: 0.0232\n",
      "Epoch 247/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0146 - val_loss: 0.0234\n",
      "Epoch 248/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0146 - val_loss: 0.0235\n",
      "Epoch 249/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0145 - val_loss: 0.0234\n",
      "Epoch 250/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0145 - val_loss: 0.0233\n",
      "Epoch 251/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0145 - val_loss: 0.0233\n",
      "Epoch 252/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0144 - val_loss: 0.0235\n",
      "Epoch 253/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0144 - val_loss: 0.0236\n",
      "Epoch 254/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0144 - val_loss: 0.0235\n",
      "Epoch 255/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0143 - val_loss: 0.0235\n",
      "Epoch 256/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0143 - val_loss: 0.0234\n",
      "Epoch 257/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0143 - val_loss: 0.0235\n",
      "Epoch 258/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0142 - val_loss: 0.0238\n",
      "Epoch 259/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0142 - val_loss: 0.0238\n",
      "Epoch 260/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0142 - val_loss: 0.0237\n",
      "Epoch 261/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0142 - val_loss: 0.0236\n",
      "Epoch 262/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0141 - val_loss: 0.0236\n",
      "Epoch 263/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0141 - val_loss: 0.0237\n",
      "Epoch 00263: early stopping\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.02539482 0.01580018 0.10184604 0.03374104 0.04346669 0.01839194\n",
      " 0.04758029 0.08257537 0.02425884 0.02795838 0.05173889 0.01047118\n",
      " 0.15329902 0.1220108  0.02137648 0.01770593 0.01411405 0.0381071\n",
      " 0.15016273]\n",
      "0.99999976\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "model_types = ['basic','att1','att2','att3']\n",
    "model_type = model_types[3]\n",
    "merge_types = ['avg','concat']\n",
    "merge_type = merge_types[0]\n",
    "train(train_x,train_y,test_x,test_y,feature_cnt,feature_max,model_type,epochs,merge_type,dim)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 317,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "KerasTensor(type_spec=TensorSpec(shape=(None, 6, 19), dtype=tf.float32, name=None), name='reshape/Reshape:0', description=\"created by layer 'reshape'\")\n",
      "KerasTensor(type_spec=TensorSpec(shape=(None, 19), dtype=tf.float32, name=None), name='attention/Sum:0', description=\"created by layer 'attention'\")\n",
      "KerasTensor(type_spec=TensorSpec(shape=(None, 6, 19), dtype=tf.float32, name=None), name='repeat_vector/Tile:0', description=\"created by layer 'repeat_vector'\")\n",
      "Model: \"model\"\n",
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_1 (InputLayer)            [(None, 6, 19)]      0                                            \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization (BatchNorma (None, 6, 19)        76          input_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "flatten (Flatten)               (None, 114)          0           batch_normalization[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "dense (Dense)                   (None, 114)          13110       flatten[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "reshape (Reshape)               (None, 6, 19)        0           dense[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "attention (Lambda)              (None, 19)           0           reshape[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "repeat_vector (RepeatVector)    (None, 6, 19)        0           attention[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply (Multiply)             (None, 6, 19)        0           batch_normalization[0][0]        \n",
      "                                                                 repeat_vector[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "flatten_1 (Flatten)             (None, 114)          0           multiply[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "repeat_vector_1 (RepeatVector)  (None, 1, 114)       0           flatten_1[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "lstm (LSTM)                     (None, 1, 128)       124416      repeat_vector_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "lstm_1 (LSTM)                   (None, 64)           49408       lstm[0][0]                       \n",
      "__________________________________________________________________________________________________\n",
      "dense_1 (Dense)                 (None, 32)           2080        lstm_1[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "dense_2 (Dense)                 (None, 1)            33          dense_1[0][0]                    \n",
      "==================================================================================================\n",
      "Total params: 189,123\n",
      "Trainable params: 189,085\n",
      "Non-trainable params: 38\n",
      "__________________________________________________________________________________________________\n",
      "Epoch 1/1000\n",
      "320/320 [==============================] - 5s 7ms/step - loss: 0.8615 - val_loss: 0.3128\n",
      "Epoch 2/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.2538 - val_loss: 0.1804\n",
      "Epoch 3/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.1802 - val_loss: 0.1374\n",
      "Epoch 4/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.1428 - val_loss: 0.1199\n",
      "Epoch 5/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.1274 - val_loss: 0.1098\n",
      "Epoch 6/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.1170 - val_loss: 0.1022\n",
      "Epoch 7/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.1088 - val_loss: 0.0957\n",
      "Epoch 8/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1019 - val_loss: 0.0900\n",
      "Epoch 9/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0957 - val_loss: 0.0848\n",
      "Epoch 10/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0900 - val_loss: 0.0801\n",
      "Epoch 11/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0849 - val_loss: 0.0758\n",
      "Epoch 12/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0802 - val_loss: 0.0718\n",
      "Epoch 13/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0759 - val_loss: 0.0680\n",
      "Epoch 14/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0719 - val_loss: 0.0644\n",
      "Epoch 15/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0681 - val_loss: 0.0609\n",
      "Epoch 16/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0645 - val_loss: 0.0575\n",
      "Epoch 17/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0611 - val_loss: 0.0544\n",
      "Epoch 18/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0579 - val_loss: 0.0516\n",
      "Epoch 19/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0550 - val_loss: 0.0491\n",
      "Epoch 20/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0523 - val_loss: 0.0471\n",
      "Epoch 21/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0499 - val_loss: 0.0453\n",
      "Epoch 22/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0478 - val_loss: 0.0439\n",
      "Epoch 23/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0460 - val_loss: 0.0427\n",
      "Epoch 24/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0444 - val_loss: 0.0417\n",
      "Epoch 25/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0431 - val_loss: 0.0409\n",
      "Epoch 26/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0419 - val_loss: 0.0402\n",
      "Epoch 27/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0410 - val_loss: 0.0396\n",
      "Epoch 28/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0401 - val_loss: 0.0391\n",
      "Epoch 29/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0393 - val_loss: 0.0386\n",
      "Epoch 30/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0387 - val_loss: 0.0382\n",
      "Epoch 31/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0380 - val_loss: 0.0378\n",
      "Epoch 32/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0375 - val_loss: 0.0374\n",
      "Epoch 33/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0369 - val_loss: 0.0370\n",
      "Epoch 34/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0364 - val_loss: 0.0367\n",
      "Epoch 35/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0359 - val_loss: 0.0363\n",
      "Epoch 36/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0355 - val_loss: 0.0360\n",
      "Epoch 37/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0351 - val_loss: 0.0357\n",
      "Epoch 38/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0346 - val_loss: 0.0354\n",
      "Epoch 39/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0342 - val_loss: 0.0352\n",
      "Epoch 40/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0339 - val_loss: 0.0349\n",
      "Epoch 41/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0335 - val_loss: 0.0346\n",
      "Epoch 42/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0332 - val_loss: 0.0344\n",
      "Epoch 43/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0328 - val_loss: 0.0341\n",
      "Epoch 44/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0325 - val_loss: 0.0339\n",
      "Epoch 45/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0322 - val_loss: 0.0337\n",
      "Epoch 46/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0319 - val_loss: 0.0335\n",
      "Epoch 47/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0316 - val_loss: 0.0332\n",
      "Epoch 48/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0313 - val_loss: 0.0330\n",
      "Epoch 49/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0310 - val_loss: 0.0328\n",
      "Epoch 50/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0307 - val_loss: 0.0326\n",
      "Epoch 51/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0305 - val_loss: 0.0324\n",
      "Epoch 52/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0302 - val_loss: 0.0322\n",
      "Epoch 53/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0300 - val_loss: 0.0321\n",
      "Epoch 54/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0298 - val_loss: 0.0319\n",
      "Epoch 55/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0295 - val_loss: 0.0317\n",
      "Epoch 56/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0293 - val_loss: 0.0316\n",
      "Epoch 57/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0291 - val_loss: 0.0314\n",
      "Epoch 58/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0289 - val_loss: 0.0313\n",
      "Epoch 59/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0287 - val_loss: 0.0311\n",
      "Epoch 60/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0285 - val_loss: 0.0310\n",
      "Epoch 61/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0283 - val_loss: 0.0309\n",
      "Epoch 62/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0281 - val_loss: 0.0307\n",
      "Epoch 63/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0279 - val_loss: 0.0306\n",
      "Epoch 64/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0278 - val_loss: 0.0305\n",
      "Epoch 65/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0276 - val_loss: 0.0304\n",
      "Epoch 66/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0274 - val_loss: 0.0303\n",
      "Epoch 67/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0272 - val_loss: 0.0302\n",
      "Epoch 68/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0271 - val_loss: 0.0300\n",
      "Epoch 69/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0269 - val_loss: 0.0299\n",
      "Epoch 70/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0267 - val_loss: 0.0298\n",
      "Epoch 71/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0266 - val_loss: 0.0297\n",
      "Epoch 72/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0264 - val_loss: 0.0296\n",
      "Epoch 73/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0263 - val_loss: 0.0295\n",
      "Epoch 74/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0261 - val_loss: 0.0294\n",
      "Epoch 75/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0260 - val_loss: 0.0293\n",
      "Epoch 76/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0258 - val_loss: 0.0292\n",
      "Epoch 77/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0257 - val_loss: 0.0291\n",
      "Epoch 78/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0255 - val_loss: 0.0290\n",
      "Epoch 79/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0254 - val_loss: 0.0289\n",
      "Epoch 80/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0253 - val_loss: 0.0288\n",
      "Epoch 81/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0251 - val_loss: 0.0288\n",
      "Epoch 82/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0250 - val_loss: 0.0287\n",
      "Epoch 83/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0249 - val_loss: 0.0286\n",
      "Epoch 84/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0247 - val_loss: 0.0285\n",
      "Epoch 85/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0246 - val_loss: 0.0284\n",
      "Epoch 86/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0245 - val_loss: 0.0283\n",
      "Epoch 87/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0244 - val_loss: 0.0282\n",
      "Epoch 88/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0242 - val_loss: 0.0281\n",
      "Epoch 89/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0241 - val_loss: 0.0280\n",
      "Epoch 90/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0240 - val_loss: 0.0280\n",
      "Epoch 91/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0239 - val_loss: 0.0279\n",
      "Epoch 92/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0238 - val_loss: 0.0278\n",
      "Epoch 93/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0236 - val_loss: 0.0277\n",
      "Epoch 94/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0235 - val_loss: 0.0277\n",
      "Epoch 95/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0234 - val_loss: 0.0276\n",
      "Epoch 96/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0233 - val_loss: 0.0275\n",
      "Epoch 97/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0232 - val_loss: 0.0274\n",
      "Epoch 98/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0231 - val_loss: 0.0274\n",
      "Epoch 99/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0230 - val_loss: 0.0273\n",
      "Epoch 100/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0229 - val_loss: 0.0272\n",
      "Epoch 101/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0228 - val_loss: 0.0271\n",
      "Epoch 102/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0227 - val_loss: 0.0271\n",
      "Epoch 103/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0226 - val_loss: 0.0270\n",
      "Epoch 104/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0225 - val_loss: 0.0270\n",
      "Epoch 105/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0224 - val_loss: 0.0269\n",
      "Epoch 106/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0223 - val_loss: 0.0269\n",
      "Epoch 107/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0222 - val_loss: 0.0268\n",
      "Epoch 108/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0221 - val_loss: 0.0267\n",
      "Epoch 109/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0220 - val_loss: 0.0266\n",
      "Epoch 110/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0219 - val_loss: 0.0266\n",
      "Epoch 111/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0218 - val_loss: 0.0265\n",
      "Epoch 112/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0217 - val_loss: 0.0266\n",
      "Epoch 113/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0216 - val_loss: 0.0265\n",
      "Epoch 114/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0215 - val_loss: 0.0265\n",
      "Epoch 115/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0215 - val_loss: 0.0264\n",
      "Epoch 116/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0214 - val_loss: 0.0264\n",
      "Epoch 117/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0213 - val_loss: 0.0263\n",
      "Epoch 118/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0212 - val_loss: 0.0263\n",
      "Epoch 119/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0212 - val_loss: 0.0262\n",
      "Epoch 120/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0211 - val_loss: 0.0262\n",
      "Epoch 121/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0210 - val_loss: 0.0261\n",
      "Epoch 122/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0209 - val_loss: 0.0262\n",
      "Epoch 123/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0208 - val_loss: 0.0261\n",
      "Epoch 124/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0207 - val_loss: 0.0261\n",
      "Epoch 125/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0207 - val_loss: 0.0260\n",
      "Epoch 126/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0206 - val_loss: 0.0261\n",
      "Epoch 127/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0206 - val_loss: 0.0260\n",
      "Epoch 128/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0204 - val_loss: 0.0261\n",
      "Epoch 129/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0204 - val_loss: 0.0259\n",
      "Epoch 130/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0203 - val_loss: 0.0261\n",
      "Epoch 131/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0203 - val_loss: 0.0259\n",
      "Epoch 132/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0202 - val_loss: 0.0260\n",
      "Epoch 133/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0202 - val_loss: 0.0258\n",
      "Epoch 134/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0200 - val_loss: 0.0260\n",
      "Epoch 135/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0200 - val_loss: 0.0258\n",
      "Epoch 136/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0199 - val_loss: 0.0260\n",
      "Epoch 137/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0199 - val_loss: 0.0258\n",
      "Epoch 138/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0198 - val_loss: 0.0260\n",
      "Epoch 139/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0198 - val_loss: 0.0257\n",
      "Epoch 140/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0196 - val_loss: 0.0260\n",
      "Epoch 141/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0197 - val_loss: 0.0257\n",
      "Epoch 142/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0195 - val_loss: 0.0259\n",
      "Epoch 143/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0195 - val_loss: 0.0257\n",
      "Epoch 144/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0194 - val_loss: 0.0259\n",
      "Epoch 145/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0194 - val_loss: 0.0257\n",
      "Epoch 146/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0193 - val_loss: 0.0259\n",
      "Epoch 147/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0193 - val_loss: 0.0256\n",
      "Epoch 148/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0192 - val_loss: 0.0259\n",
      "Epoch 149/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0192 - val_loss: 0.0256\n",
      "Epoch 150/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0191 - val_loss: 0.0259\n",
      "Epoch 151/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0191 - val_loss: 0.0256\n",
      "Epoch 152/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0189 - val_loss: 0.0258\n",
      "Epoch 153/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0190 - val_loss: 0.0256\n",
      "Epoch 154/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0188 - val_loss: 0.0258\n",
      "Epoch 155/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0189 - val_loss: 0.0255\n",
      "Epoch 156/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0187 - val_loss: 0.0258\n",
      "Epoch 157/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0188 - val_loss: 0.0255\n",
      "Epoch 158/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0186 - val_loss: 0.0257\n",
      "Epoch 159/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0187 - val_loss: 0.0255\n",
      "Epoch 160/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0185 - val_loss: 0.0257\n",
      "Epoch 161/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0186 - val_loss: 0.0254\n",
      "Epoch 162/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0184 - val_loss: 0.0257\n",
      "Epoch 163/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0184 - val_loss: 0.0254\n",
      "Epoch 164/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0183 - val_loss: 0.0256\n",
      "Epoch 165/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0183 - val_loss: 0.0254\n",
      "Epoch 166/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0182 - val_loss: 0.0256\n",
      "Epoch 167/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0182 - val_loss: 0.0254\n",
      "Epoch 168/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0181 - val_loss: 0.0256\n",
      "Epoch 169/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0181 - val_loss: 0.0254\n",
      "Epoch 170/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0180 - val_loss: 0.0256\n",
      "Epoch 171/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0181 - val_loss: 0.0253\n",
      "Epoch 172/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0179 - val_loss: 0.0255\n",
      "Epoch 173/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0180 - val_loss: 0.0253\n",
      "Epoch 174/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0178 - val_loss: 0.0255\n",
      "Epoch 175/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0179 - val_loss: 0.0253\n",
      "Epoch 176/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0177 - val_loss: 0.0255\n",
      "Epoch 177/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0178 - val_loss: 0.0253\n",
      "Epoch 178/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0177 - val_loss: 0.0255\n",
      "Epoch 179/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0177 - val_loss: 0.0252\n",
      "Epoch 180/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0176 - val_loss: 0.0254\n",
      "Epoch 181/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0176 - val_loss: 0.0252\n",
      "Epoch 182/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0175 - val_loss: 0.0254\n",
      "Epoch 183/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0175 - val_loss: 0.0252\n",
      "Epoch 184/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0174 - val_loss: 0.0254\n",
      "Epoch 185/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0174 - val_loss: 0.0252\n",
      "Epoch 186/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0174 - val_loss: 0.0259\n",
      "Epoch 187/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0173 - val_loss: 0.0256\n",
      "Epoch 188/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0172 - val_loss: 0.0255\n",
      "Epoch 189/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0171 - val_loss: 0.0257\n",
      "Epoch 190/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0170 - val_loss: 0.0255\n",
      "Epoch 191/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0169 - val_loss: 0.0256\n",
      "Epoch 192/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0169 - val_loss: 0.0255\n",
      "Epoch 193/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0168 - val_loss: 0.0255\n",
      "Epoch 194/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0167 - val_loss: 0.0255\n",
      "Epoch 195/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0167 - val_loss: 0.0254\n",
      "Epoch 196/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0166 - val_loss: 0.0254\n",
      "Epoch 197/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0166 - val_loss: 0.0257\n",
      "Epoch 198/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0167 - val_loss: 0.0254\n",
      "Epoch 199/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0164 - val_loss: 0.0257\n",
      "Epoch 200/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0165 - val_loss: 0.0254\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 201/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0163 - val_loss: 0.0256\n",
      "Epoch 202/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0163 - val_loss: 0.0254\n",
      "Epoch 203/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0162 - val_loss: 0.0256\n",
      "Epoch 204/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0162 - val_loss: 0.0254\n",
      "Epoch 205/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0161 - val_loss: 0.0256\n",
      "Epoch 206/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0161 - val_loss: 0.0254\n",
      "Epoch 207/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0160 - val_loss: 0.0257\n",
      "Epoch 208/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0160 - val_loss: 0.0254\n",
      "Epoch 209/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0159 - val_loss: 0.0258\n",
      "Epoch 210/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0159 - val_loss: 0.0253\n",
      "Epoch 211/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0158 - val_loss: 0.0255\n",
      "Epoch 212/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0158 - val_loss: 0.0256\n",
      "Epoch 213/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0158 - val_loss: 0.0254\n",
      "Epoch 214/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0156 - val_loss: 0.0256\n",
      "Epoch 215/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0157 - val_loss: 0.0252\n",
      "Epoch 216/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0156 - val_loss: 0.0252\n",
      "Epoch 217/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0155 - val_loss: 0.0255\n",
      "Epoch 218/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0156 - val_loss: 0.0251\n",
      "Epoch 219/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0154 - val_loss: 0.0253\n",
      "Epoch 220/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0154 - val_loss: 0.0251\n",
      "Epoch 221/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0153 - val_loss: 0.0253\n",
      "Epoch 222/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0153 - val_loss: 0.0250\n",
      "Epoch 223/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0153 - val_loss: 0.0250\n",
      "Epoch 224/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0152 - val_loss: 0.0251\n",
      "Epoch 225/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0152 - val_loss: 0.0249\n",
      "Epoch 226/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0151 - val_loss: 0.0251\n",
      "Epoch 227/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0151 - val_loss: 0.0248\n",
      "Epoch 228/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0151 - val_loss: 0.0247\n",
      "Epoch 229/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0150 - val_loss: 0.0251\n",
      "Epoch 230/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0150 - val_loss: 0.0247\n",
      "Epoch 231/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0149 - val_loss: 0.0248\n",
      "Epoch 232/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0149 - val_loss: 0.0246\n",
      "Epoch 233/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0148 - val_loss: 0.0247\n",
      "Epoch 234/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0148 - val_loss: 0.0245\n",
      "Epoch 235/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0147 - val_loss: 0.0246\n",
      "Epoch 236/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0147 - val_loss: 0.0245\n",
      "Epoch 237/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0147 - val_loss: 0.0245\n",
      "Epoch 238/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0146 - val_loss: 0.0244\n",
      "Epoch 239/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0146 - val_loss: 0.0245\n",
      "Epoch 240/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0146 - val_loss: 0.0243\n",
      "Epoch 241/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0145 - val_loss: 0.0243\n",
      "Epoch 242/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0145 - val_loss: 0.0243\n",
      "Epoch 243/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0144 - val_loss: 0.0243\n",
      "Epoch 244/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0144 - val_loss: 0.0242\n",
      "Epoch 245/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0143 - val_loss: 0.0242\n",
      "Epoch 246/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0143 - val_loss: 0.0241\n",
      "Epoch 247/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0142 - val_loss: 0.0241\n",
      "Epoch 248/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0142 - val_loss: 0.0240\n",
      "Epoch 249/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0143 - val_loss: 0.0239\n",
      "Epoch 250/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0142 - val_loss: 0.0242\n",
      "Epoch 251/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0143 - val_loss: 0.0239\n",
      "Epoch 252/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0141 - val_loss: 0.0240\n",
      "Epoch 253/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0141 - val_loss: 0.0238\n",
      "Epoch 254/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0140 - val_loss: 0.0239\n",
      "Epoch 255/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0140 - val_loss: 0.0238\n",
      "Epoch 256/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0139 - val_loss: 0.0238\n",
      "Epoch 257/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0139 - val_loss: 0.0237\n",
      "Epoch 258/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0139 - val_loss: 0.0237\n",
      "Epoch 259/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0139 - val_loss: 0.0237\n",
      "Epoch 260/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0138 - val_loss: 0.0238\n",
      "Epoch 261/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0139 - val_loss: 0.0236\n",
      "Epoch 262/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0138 - val_loss: 0.0236\n",
      "Epoch 263/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0137 - val_loss: 0.0237\n",
      "Epoch 264/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0138 - val_loss: 0.0236\n",
      "Epoch 265/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0136 - val_loss: 0.0236\n",
      "Epoch 266/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0136 - val_loss: 0.0235\n",
      "Epoch 267/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0136 - val_loss: 0.0235\n",
      "Epoch 268/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0136 - val_loss: 0.0234\n",
      "Epoch 269/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0135 - val_loss: 0.0235\n",
      "Epoch 270/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0135 - val_loss: 0.0234\n",
      "Epoch 271/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0135 - val_loss: 0.0234\n",
      "Epoch 272/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0134 - val_loss: 0.0237\n",
      "Epoch 273/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0135 - val_loss: 0.0234\n",
      "Epoch 274/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0135 - val_loss: 0.0234\n",
      "Epoch 275/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0133 - val_loss: 0.0235\n",
      "Epoch 276/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0134 - val_loss: 0.0234\n",
      "Epoch 277/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0133 - val_loss: 0.0234\n",
      "Epoch 278/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0132 - val_loss: 0.0233\n",
      "Epoch 279/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0132 - val_loss: 0.0234\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 280/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0132 - val_loss: 0.0233\n",
      "Epoch 281/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0132 - val_loss: 0.0234\n",
      "Epoch 282/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0132 - val_loss: 0.0232\n",
      "Epoch 283/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0131 - val_loss: 0.0234\n",
      "Epoch 284/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0132 - val_loss: 0.0233\n",
      "Epoch 285/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0131 - val_loss: 0.0235\n",
      "Epoch 286/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0131 - val_loss: 0.0233\n",
      "Epoch 287/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0130 - val_loss: 0.0234\n",
      "Epoch 288/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0130 - val_loss: 0.0233\n",
      "Epoch 289/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0129 - val_loss: 0.0233\n",
      "Epoch 290/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0130 - val_loss: 0.0233\n",
      "Epoch 291/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0129 - val_loss: 0.0235\n",
      "Epoch 292/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0130 - val_loss: 0.0234\n",
      "Epoch 293/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0129 - val_loss: 0.0234\n",
      "Epoch 294/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0129 - val_loss: 0.0233\n",
      "Epoch 295/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0128 - val_loss: 0.0233\n",
      "Epoch 296/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0128 - val_loss: 0.0234\n",
      "Epoch 297/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0128 - val_loss: 0.0233\n",
      "Epoch 298/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0127 - val_loss: 0.0235\n",
      "Epoch 299/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0127 - val_loss: 0.0234\n",
      "Epoch 300/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0127 - val_loss: 0.0234\n",
      "Epoch 301/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0127 - val_loss: 0.0232\n",
      "Epoch 302/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0127 - val_loss: 0.0231\n",
      "Epoch 303/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0126 - val_loss: 0.0236\n",
      "Epoch 304/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0127 - val_loss: 0.0235\n",
      "Epoch 305/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0125 - val_loss: 0.0235\n",
      "Epoch 306/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0125 - val_loss: 0.0235\n",
      "Epoch 307/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0125 - val_loss: 0.0232\n",
      "Epoch 308/1000\n",
      "320/320 [==============================] - ETA: 0s - loss: 0.012 - 1s 5ms/step - loss: 0.0125 - val_loss: 0.0234\n",
      "Epoch 309/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0125 - val_loss: 0.0235\n",
      "Epoch 310/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0125 - val_loss: 0.0236\n",
      "Epoch 311/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0124 - val_loss: 0.0236\n",
      "Epoch 312/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0124 - val_loss: 0.0236\n",
      "Epoch 313/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0125 - val_loss: 0.0231\n",
      "Epoch 314/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0124 - val_loss: 0.0233\n",
      "Epoch 315/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0123 - val_loss: 0.0236\n",
      "Epoch 316/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0123 - val_loss: 0.0236\n",
      "Epoch 317/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0122 - val_loss: 0.0237\n",
      "Epoch 318/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0122 - val_loss: 0.0237\n",
      "Epoch 319/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0122 - val_loss: 0.0237\n",
      "Epoch 320/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0122 - val_loss: 0.0236\n",
      "Epoch 321/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0122 - val_loss: 0.0235\n",
      "Epoch 322/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0121 - val_loss: 0.0232\n",
      "Epoch 323/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0122 - val_loss: 0.0237\n",
      "Epoch 324/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0122 - val_loss: 0.0238\n",
      "Epoch 325/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0121 - val_loss: 0.0238\n",
      "Epoch 326/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0121 - val_loss: 0.0238\n",
      "Epoch 327/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0121 - val_loss: 0.0236\n",
      "Epoch 328/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0120 - val_loss: 0.0233\n",
      "Epoch 329/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0120 - val_loss: 0.0237\n",
      "Epoch 330/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0120 - val_loss: 0.0238\n",
      "Epoch 331/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0119 - val_loss: 0.0239\n",
      "Epoch 332/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0119 - val_loss: 0.0239\n",
      "Epoch 333/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0119 - val_loss: 0.0239\n",
      "Epoch 334/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0119 - val_loss: 0.0235\n",
      "Epoch 335/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0119 - val_loss: 0.0233\n",
      "Epoch 336/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0119 - val_loss: 0.0240\n",
      "Epoch 337/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0119 - val_loss: 0.0240\n",
      "Epoch 338/1000\n",
      "320/320 [==============================] - ETA: 0s - loss: 0.011 - 2s 5ms/step - loss: 0.0118 - val_loss: 0.0240\n",
      "Epoch 339/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0118 - val_loss: 0.0240\n",
      "Epoch 340/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0118 - val_loss: 0.0240\n",
      "Epoch 341/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0117 - val_loss: 0.0239\n",
      "Epoch 342/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0118 - val_loss: 0.0236\n",
      "Epoch 343/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0118 - val_loss: 0.0243\n",
      "Epoch 344/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0118 - val_loss: 0.0242\n",
      "Epoch 345/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0117 - val_loss: 0.0240\n",
      "Epoch 346/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0117 - val_loss: 0.0241\n",
      "Epoch 347/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0116 - val_loss: 0.0236\n",
      "Epoch 348/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0117 - val_loss: 0.0242\n",
      "Epoch 349/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0116 - val_loss: 0.0243\n",
      "Epoch 350/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0116 - val_loss: 0.0243\n",
      "Epoch 351/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0115 - val_loss: 0.0244\n",
      "Epoch 352/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0115 - val_loss: 0.0244\n",
      "Epoch 353/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0115 - val_loss: 0.0245\n",
      "Epoch 354/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0115 - val_loss: 0.0243\n",
      "Epoch 355/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0116 - val_loss: 0.0238\n",
      "Epoch 356/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0115 - val_loss: 0.0235\n",
      "Epoch 357/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0115 - val_loss: 0.0246\n",
      "Epoch 358/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0115 - val_loss: 0.0244\n",
      "Epoch 359/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0114 - val_loss: 0.0245\n",
      "Epoch 360/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0114 - val_loss: 0.0245\n",
      "Epoch 361/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0113 - val_loss: 0.0246\n",
      "Epoch 362/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0114 - val_loss: 0.0245\n",
      "Epoch 363/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.0114 - val_loss: 0.0247\n",
      "Epoch 00363: early stopping\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3de5ScdZ3n8ff3eaq6O52EXBsISTCBiZeIELCJcXVn8YIkciboohg8uHrWnTiuQWZcPIbjyip7ZtdxzqDjiDKo2XHGFUTQIaPhwKBwdEcuaTRgwsU0N9NESZML5NLddXm++8fzVNelqzuVUN3VT+fzOqdOPffn2093f56nfvVczN0REZH0C1pdgIiINIcCXURkilCgi4hMEQp0EZEpQoEuIjJFZFq14vnz5/uSJUtatXoRkVR6+OGHX3T3rnrjWhboS5Ysoaenp1WrFxFJJTN7brRxanIREZkiFOgiIlOEAl1EZIpoWRu6iMjxyOfz9PX1MTg42OpSxlVHRweLFi0im802PI8CXURSpa+vj5kzZ7JkyRLMrNXljAt3Z+/evfT19bF06dKG51OTi4ikyuDgIPPmzZuyYQ5gZsybN++YP4Uo0EUkdaZymJccz8/YUKCb2Woze9LMes1sY53xXzazbcnrt2Z24JgradDWZ/dx/d1PkitE47UKEZFUOmqgm1kI3ACsAZYDl5vZ8spp3P0v3H2Fu68A/g744XgUC/Cr5/bz1Z/1UogU6CIy8Q4cOMDXv/71Y57v3e9+NwcOjNuxLtDYEfpKoNfdn3b3HHALcMkY018O3NyM4uopfQqJ9FwOEWmB0QK9WCyOOd+WLVuYPXv2eJUFNHaWy0JgV0V/H/CmehOa2auApcDPXnlp9QVJoutJSyLSChs3buSpp55ixYoVZLNZZsyYwYIFC9i2bRuPPfYY73nPe9i1axeDg4NcddVVrF+/Hijf7uTQoUOsWbOGt771rfzyl79k4cKF3HHHHUybNu0V19ZIoNdrmR8tTdcBt7l73V2Vma0H1gOcfvrpDRU4Gh2hi8gX/mUHj+1+uanLXH7aSfyPP3n9qOO/+MUvsn37drZt28Z9993HxRdfzPbt24dPL9y0aRNz585lYGCA888/n0svvZR58+ZVLWPnzp3cfPPNfPOb3+Syyy7j9ttv54orrnjFtTfS5NIHLK7oXwTsHmXadYzR3OLuN7l7t7t3d3XVvVnYUZWO0EfdpYiITKCVK1dWnSv+1a9+lXPOOYdVq1axa9cudu7cOWKepUuXsmLFCgDe+MY38uyzzzallkaO0LcCy8xsKfA8cWh/sHYiM3sNMAe4vymVjaLchq5EFznRjXUkPVGmT58+3H3fffdxzz33cP/999PZ2ckFF1xQ91zy9vb24e4wDBkYGGhKLUc9Qnf3ArABuAt4HLjV3XeY2XVmtrZi0suBW3ycG7eH29DHcyUiIqOYOXMmBw8erDvupZdeYs6cOXR2dvLEE0/wwAMPTGhtDV367+5bgC01w66t6f9888oaXaAjdBFpoXnz5vGWt7yFs846i2nTpnHKKacMj1u9ejU33ngjZ599Nq95zWtYtWrVhNaWvnu5JEfoCnQRaZXvfe97dYe3t7dz55131h1XaiefP38+27dvHx5+9dVXN62u1F36XzpCV5uLiEi11AW6UTpCb3EhIiKTTOoCPRg+a1GJLiJSKXWBrkv/RUTqS2Gg69J/EZF60hfoybvyXESkWuoCvXxzrhYXIiInpOO9fS7AV77yFY4cOdLkispSF+i69F9EWmkyB3rqLizSpf8i0kqVt8+98MILOfnkk7n11lsZGhrive99L1/4whc4fPgwl112GX19fRSLRT73uc/xwgsvsHv3bt72trcxf/587r333qbXlrpA1xG6iAy7cyP84TfNXeapb4A1Xxx1dOXtc++++25uu+02HnroIdydtWvX8vOf/5z+/n5OO+00fvKTnwDxPV5mzZrF9ddfz7333sv8+fObW3MihU0uakMXkcnh7rvv5u677+bcc8/lvPPO44knnmDnzp284Q1v4J577uEzn/kMv/jFL5g1a9aE1JO+I/TkXactishYR9ITwd255ppr+NjHPjZi3MMPP8yWLVu45ppreNe73sW1115bZwnNlbojdLWhi0grVd4+96KLLmLTpk0cOnQIgOeff549e/awe/duOjs7ueKKK7j66qv51a9+NWLe8ZC6I3TdPldEWqny9rlr1qzhgx/8IG9+85sBmDFjBt/97nfp7e3l05/+NEEQkM1m+cY3vgHA+vXrWbNmDQsWLNCXolDxpWjU2jpE5MRVe/vcq666qqr/zDPP5KKLLhox35VXXsmVV145bnWlrsll+EtRNbqIiFRJX6An72pxERGplrpA16X/InIinOV2PD9j6gJdFxaJnNg6OjrYu3fvlA51d2fv3r10dHQc03wNfSlqZquBvwVC4FvuPuLkTzO7DPg88RmFj7j7B4+pkgbptEWRE9uiRYvo6+ujv7+/1aWMq46ODhYtWnRM8xw10M0sBG4ALgT6gK1mttndH6uYZhlwDfAWd99vZicfUxXHQkfoIie0bDbL0qVLW13GpNRIk8tKoNfdn3b3HHALcEnNNH8K3ODu+wHcfU9zyyxTG7qISH2NBPpCYFdFf18yrNKrgVeb2b+Z2QNJE80IZrbezHrMrOd4Py7p0n8RkfoaCXSrM6w2TTPAMuAC4HLgW2Y2e8RM7je5e7e7d3d1dR1rrYDa0EVERtNIoPcBiyv6FwG760xzh7vn3f0Z4EnigG+68pWiinQRkUqNBPpWYJmZLTWzNmAdsLlmmn8G3gZgZvOJm2CebmahJaVAV5yLiFQ7aqC7ewHYANwFPA7c6u47zOw6M1ubTHYXsNfMHgPuBT7t7nvHo2BLWoB0louISLWGzkN39y3Alpph11Z0O/Cp5DWuguFvRcd7TSIi6ZK6K0WDoHSE3uJCREQmmdQFeukAXU0uIiLV0hfoOm1RRKSuFAZ6/K4jdBGRaqkL9EDnLYqI1JW6QFcbuohIfakLdN2cS0SkvtQFutrQRUTqS22gK85FRKqlL9ApNbko0kVEKqUu0IOkYuW5iEi11AV6+eZcLS5ERGSSSV2gB8Nt6Ep0EZFKqQv08lkura1DRGSySWGg60tREZF60hfoybvyXESkWuoCvXSlqC4sEhGpltpAV56LiFRLXaDr0n8RkfoaCnQzW21mT5pZr5ltrDP+I2bWb2bbktd/aX6ppXXF74pzEZFqR31ItJmFwA3AhUAfsNXMNrv7YzWTft/dN4xDjbX1ADrLRUSkViNH6CuBXnd/2t1zwC3AJeNb1uiGLyxSnouIVGkk0BcCuyr6+5JhtS41s0fN7DYzW1xvQWa23sx6zKynv7//OMrVpf8iIqNpJNCtzrDaOP0XYIm7nw3cA3yn3oLc/SZ373b37q6urmOrNKFL/0VE6msk0PuAyiPuRcDuygncfa+7DyW93wTe2Jzy6tCl/yIidTUS6FuBZWa21MzagHXA5soJzGxBRe9a4PHmlVit/JBoJbqISKWjnuXi7gUz2wDcBYTAJnffYWbXAT3uvhn4pJmtBQrAPuAj41Vw+SHR47UGEZF0OmqgA7j7FmBLzbBrK7qvAa5pbmn1BTptUUSkrhRfKdraOkREJpsUBnpyhN7iOkREJpsUBnr8riYXEZFqqQt03T5XRKS+FAZ6/K48FxGplrpA16X/IiL1pS/Qdem/iEhd6Q105bmISJXUBbouLBIRqS91ga5L/0VE6ktdoOsh0SIi9aUu0PWQaBGR+lIY6Lr0X0SkntQFOsRH6fpSVESkWioDPTBTG7qISI1UBrqhNnQRkVqpDPTATG3oIiI1UhnomI7QRURqpTLQA9N56CIitVIa6KazXEREajQU6Ga22syeNLNeM9s4xnTvMzM3s+7mlVhnPejSfxGRWkcNdDMLgRuANcBy4HIzW15nupnAJ4EHm11kLZ22KCIyUiNH6CuBXnd/2t1zwC3AJXWm+5/Al4DBJtZXn74UFREZoZFAXwjsqujvS4YNM7NzgcXu/uOxFmRm682sx8x6+vv7j7nYktINukREpKyRQK+XnsOHx2YWAF8G/tvRFuTuN7l7t7t3d3V1NV5lbUE6QhcRGaGRQO8DFlf0LwJ2V/TPBM4C7jOzZ4FVwObx/GJUbegiIiM1EuhbgWVmttTM2oB1wObSSHd/yd3nu/sSd18CPACsdfeecakYXfovIlLPUQPd3QvABuAu4HHgVnffYWbXmdna8S6wHtOl/yIiI2QamcjdtwBbaoZdO8q0F7zyssam2+eKiIyU0itFdem/iEitVAa6YWpDFxGpkcpA1xG6iMhIqQx0M9O9XEREaqQ00PWlqIhIrVQGup5YJCIyUioDXZf+i4iMlMpA16X/IiIjpTLQdem/iMhI6Qx0Q23oIiI1UhroeqaoiEitVAa6LiwSERkplYGuS/9FREZKZ6DrCF1EZISUBrou/RcRqZXKQA8MdJ6LiEi1VAZ6fKVoq6sQEZlc0hfo+55hZX4rRIVWVyIiMqmkL9Af38y1L3+BMMq1uhIRkUmloUA3s9Vm9qSZ9ZrZxjrj/8zMfmNm28zs/5nZ8uaXmgiy8Zvnx20VIiJpdNRAN7MQuAFYAywHLq8T2N9z9ze4+wrgS8D1Ta+0JIwDPeNqchERqdTIEfpKoNfdn3b3HHALcEnlBO7+ckXvdMbzFJSwDYAg0hG6iEilTAPTLAR2VfT3AW+qncjMPgF8CmgD3l5vQWa2HlgPcPrppx9rrbEk0EMdoYuIVGnkCN3qDBtxBO7uN7j7mcBngP9eb0HufpO7d7t7d1dX17FVWpI0uegIXUSkWiOB3gcsruhfBOweY/pbgPe8kqLGlAR6qC9FRUSqNBLoW4FlZrbUzNqAdcDmygnMbFlF78XAzuaVWKPUhu7FcVuFiEgaHbUN3d0LZrYBuAsIgU3uvsPMrgN63H0zsMHM3gnkgf3Ah8et4qB0louO0EVEKjXypSjuvgXYUjPs2oruq5pc1+hCnYcuIlJP+q4U1VkuIiJ1pTfQdS8XEZEqKQz0uJUoRE0uIiKVUhjoanIREalHgS4iMkWkL9CDpMlFZ7mIiFRJX6DrCF1EpC4FuojIFJHCQNf90EVE6klxoKsNXUSkUgoDPWlyQUfoIiKV0hfoQUhEoDZ0EZEa6Qt0oGih2tBFRGqkNNCzZHTpv4hIlVQGesEyhHrAhYhIlVQGetGyOstFRKRGOgOdDBmd5SIiUiWdgR5k9KWoiEiNdAa6ZXXaoohIjYYC3cxWm9mTZtZrZhvrjP+UmT1mZo+a2U/N7FXNL7VCkNUzRUVEahw10M0sBG4A1gDLgcvNbHnNZL8Gut39bOA24EvNLrSSB1ksyuPu47kaEZFUaeQIfSXQ6+5Pu3sOuAW4pHICd7/X3Y8kvQ8Ai5pbZo0wS8YLDBWicV2NiEiaNBLoC4FdFf19ybDRfBS4s94IM1tvZj1m1tPf3994lbUybWStyKEhtaOLiJQ0EuhWZ1jdtg4zuwLoBv663nh3v8ndu929u6urq/EqawRhljYKHFagi4gMyzQwTR+wuKJ/EbC7diIzeyfwWeA/uPtQc8qrzzJtZCnoCF1EpEIjR+hbgWVmttTM2oB1wObKCczsXODvgbXuvqf5ZVYLMu1kKHIkp8v/RURKjhro7l4ANgB3AY8Dt7r7DjO7zszWJpP9NTAD+IGZbTOzzaMsrimCTFZH6CIiNRppcsHdtwBbaoZdW9H9zibXNaZMtl1t6CIiNVJ5pWjQPp1OG1Sgi4hUaOgIfbLJTJ9LB4c5PKhAFxEpSWWgZ2fMJbSI3JGXWl2KiMikkcoml7BzLgDFgf0trkREZPJIZaAzbQ4AduRAiwsREZk8UhroswGwQR2hi4iUpDTQkyP0QR2hi4iUpDrQwyEFuohISToDvSNucmFAgS4iUpLOQM9OI29thDkFuohISToD3Yxc9iSmFQ4ymNcNukREIK2BDhTaZjHLDrPn5XG9U6+ISGqkNtCj6SezwPbRf2iw1aWIiEwKqQ10n/dq/sieZ89LCnQREUhxoLed9npm2gCH+59rdSkiIpNCagO9c+FZcUf/460tRERkkkhtoAenvA6AaM8TLa5ERGRySG2g0zmXfdlT6dr/a9y91dWIiLRcegMdePHUf8/K6BF29esCIxGRVAd6+/I1TLchdv367laXIiLScg0FupmtNrMnzazXzDbWGf/HZvYrMyuY2fuaX2Z9i85bzSGmEe64faJWKSIyaR010M0sBG4A1gDLgcvNbHnNZL8DPgJ8r9kFjiVsn86OuRdyzkv3MnhQ90YXkRNbI0foK4Fed3/a3XPALcAllRO4+7Pu/igQjUONY2pb+Z+ZZjmeuevvJnrVIiKTSiOBvhDYVdHflww7Zma23sx6zKynv7//eBYxwtkrL+ChYAULHvs25I40ZZkiImnUSKBbnWHHdZ6gu9/k7t3u3t3V1XU8ixghDIzd52xgdnSA53/6jaYsU0QkjRoJ9D5gcUX/ImD3+JRzfN65+r30sJzpW78GQwdbXY6ISEs0EuhbgWVmttTM2oB1wObxLevYzGjP8Hz3Z5gd7aPvjutaXY6ISEscNdDdvQBsAO4CHgdudfcdZnadma0FMLPzzawPeD/w92a2YzyLrueii/6EHwdv59THvk3hBd0OQEROPNaqy+a7u7u9p6enqcv86dbtnP/jCzk8axkLrvoZhJmmLl9EpNXM7GF37643LtVXitZ6x/lncfupV7Hg5UfYe9f/bnU5IiITakoFOsDFV/w5W3grsx+6noHeX7S6HBGRCTPlAv3kmR3Mef/XeC46hcLNV+AHftfqkkREJsSUC3SAN79+KQ+++Qa8MMSemy6F3OFWlyQiMu6mZKADrFv9dn54xnV0Hd7JM9/8EETFVpckIjKupmygmxkf+tCf8sOuP2Np/0/Z/u2PgR6EISJT2JQNdIhvC3DJx/8X98z5AGc9/wMeuPHjFAqFVpclIjIupnSgA2TDgLdtuJEH5/9HVr1wMw/9zaX8of/FVpclItJ0Uz7QAcIw4E2f2MSjr72KfzdwH8WvreKnP9rEUD7f6tJERJrmhAh0AMw4e911/OHSH0G2g3c88hf8/i/P4f7vfJYXn9oG0YTfyl1EpKmm1KX/jfLCEL/92XcJtt7Esnx835dDNp0XZ76OcMFZzF74Gmae9mqYewbMWgxhtiV1iojUGuvS/xMy0CvtenYnv/23f6bY92sWHH6MM203nTY0PN4xBtrmUZxxKuGs0+iYu5DgpNNgxskwbS50zoPOuUn3XIW/iIyrsQL9hL971eIly1i85NMAHBoq8GjfAZ565in273qCfH8vHYf6mHNkH6cM7OfUF5/g5KfvZ56Nfs/1YttMmDaHYPo8bNocaJ8JbTOhfQa0zah4n1n9nu2ATAdkp5Xfw3YITpxWMRF5ZU74QK80oz3DqjPns+rM+cCbAHB3+g8O8cyLh/nN3iM8t+8w/fsPMnDg9wy9/CKFQ3uZVniZOXaQORxkTuEQswcOMXf/QeYFv2NmMMgMBulkgI5ogOBYH7satidhP60c+rXBn2mPx4fZuDtsi1+jdrfFyx2tOwghyNS8aoeFYPUeZiUiraJAPwoz4+STOjj5pA7edMa8utMcHMzzh5cG6T84xN7DOfYdzvHs4Rz7k+69h4fYdzjHvkNDDA4cYlo0wHQbYDpx2E+3ATrI0U6eDsvRYTlmZYqcFBaYERbptDydUY7OXJ6OfJ52cnQwRDsHafMcWR8iE+UIPU/oeYJijiDKYz7O59yXwt0CwOKAtyAJ/2zc7RF4MZ4ubIvHRUWICvFOJirGw70YLyPMQjEX76yiAliyIynm4h1asZCsN4jnzbTH48K2eH4vxvMW88kwAI/niQrJMI8vMgvbIEqm8yieP8hAMWlyC9vh4O+hMBR/khregVmyQwvj92I+Xm8xH9eDxct1j38eCyF3KPnZ8nHTXCEX1w0wvSvZdsbwEx9L3aV1Wggds8rD22ckw4Nke2TjWsJsubuyxuH3IJ5m6FC8jLAtHjb8O6T6d1l61a4DK2/H0jaut21K80eF+Of1qPqgAKv5WUfZDoVBOPJi+YAm0x7/XnKHk+V63Axa+lsp5pP3XPx3Mm12POzwnnLNw+vx+O8qSs56m34y5A/DkX3JgVA2/lvItMP+56AwAB2z499HfiD+G/GovD3c42170mnwh99AfrD8eyzV9dqLYVHdVpNXRIHeBDM7sszsyLLslJlHndbdGcgXOThY4OBgnpcHC8Pdhyq6DwwW2DVY4PBQgSP5IkeGChzJFRnIFzmSi7uP5IoUo9G/AwmIyFKgjQJt5GmjQNYKdFqB6ZmI6ZkinUGRzkxEZ1CgMygyLSjSHka0BxHtgdMWOFmLaAuctiCizYpkLRp+hV4gDCAEwsAJcEIiQoqERFgQEgQhARGh5wi9iIVZLMgQFgewMEvoOYIgg+GYF7AgG/8DB5k4KKMovrd9YSgJ5mJ5J1EYjIMmysf/VBaWdwjF5B/ULAn4bPwPWAqr3OEk3A4yHCBRIZ7XDAb2x+HbflIcyO7xcI+SGqKkpjD+h2+bHge1WfzPX1pvVIxDu5iD9jBeX2l6L8L+ZxkRju4Mh6R7XNfQy8m6ozhU3Ms7TEmPIAuzT1egTwVmRmdbhs62DKec1PGKluXu5IoRA0m4x68k+Cv6c8WIXCFiqBAxlI8YKhTL/YUiQ4WIF/MRuWLSn4/H5XLl8UOF0jKK5Ivj+0V6JjDCwIbfs2FQ7g+NbBCQCY1MEJANjUwyPjQjExqBGRmMILSaZQXxzicIqoeH5fHZ2v5kPZnQyIZxLZXrzQbxeyY02irrrHhlgqCmv/rdXmnTVSnwo0KyA0m6Szu+4feo/EmirTM5us2Xdx4eVXR7+aiz9IkqKsY7zmLF9Ru1R9OVO7vSej2KQyyTfIoaXlaBqp1X1TvVw4JsfAReGIp34oXBuJmxrTPeOZrBy7vjaUtNi2G2/Alk8KV4kSctrD4yL30yC7PxAQIOh/bE3SedFq+vmI8/tRVyMKMrPgFi8EC8TAthzqtqPuVYPO7A72D+q+O6PWlqDdvGtalSgZ5iZkZ7JqQ9EzK7c+LWW4ycfDFKXk6hGO8MCkUfHpYvRhSiiFzBKURR1fDyfNX98TxOMYrfC0WnGMXzx+v04XUXiqXllscXooihQjxN0cvzFz1ZzvDynMjj5URJf7ze1pzxFRjDoZ8JjKAm9IMRO4nyjilM5g2C+FYXgdnwe9xN3F0aZyTDDybLypaXa+UdTGk+MyNI5gmM4eWUhpXGl+bLVCwnTGoPAjCMIIr/ZoMAgjAZbjXLg/I6g/h9xDSWLC8o12VmBHOqp6n3XjV9xbBSi1ftNKNbPPYvdfp8mHdmM/9MGqJAl2MW/7OGdGTDVpfSVO7lwC/tAPJReUdVqNiRVe1QkunyhYjIq+cf3rG4U0yWMTxNsTxt9U4nGrETKibzFIoRxQiiZHzlK1+Md2zupeWVf6bIncjL80UVO7ZCxTIid6Jk+aV5TmRjhb5V7uhqdn4jdyQVOyMzPvmOZaw957Sm19tQoJvZauBviZtKv+XuX6wZ3w78I/BGYC/wAXd/trmliowvS5psMlNrP/WKeRLspcB3rwj80s6lor8QReV3L8/vlKevWkbFNKVxlf3V05emKQ0be5ooabWp7K9e51jrPfo0dX+O0s9I7TQQJXvI2dPG53qVowa6mYXADcCFQB+w1cw2u/tjFZN9FNjv7n9kZuuAvwI+MB4Fi8jEsqSpJgx0mupk18hVKyuBXnd/2t1zwC3AJTXTXAJ8J+m+DXiHveJvekRE5Fg0EugLgV0V/X3JsLrTuHsBeAkYcdK2ma03sx4z6+nv7z++ikVEpK5GAr3ekXbtVyWNTIO73+Tu3e7e3dXV1Uh9IiLSoEYCvY/qc3QWAbtHm8bMMsAsYF8zChQRkcY0EuhbgWVmttTM2oB1wOaaaTYDH0663wf8zFt1G0cRkRPUUc9ycfeCmW0A7iI+bXGTu+8ws+uAHnffDHwb+Ccz6yU+Ml83nkWLiMhIDZ2H7u5bgC01w66t6B4E3t/c0kRE5FjoZtsiIlNEy55YZGb9wHPHOft84MUmljNeVGdzqc7mSkudkJ5aJ6LOV7l73dMEWxbor4SZ9Yz2CKbJRHU2l+psrrTUCemptdV1qslFRGSKUKCLiEwRaQ30m1pdQINUZ3OpzuZKS52QnlpbWmcq29BFRGSktB6hi4hIDQW6iMgUkbpAN7PVZvakmfWa2cZW11PJzJ41s9+Y2TYz60mGzTWzfzWzncn7nBbUtcnM9pjZ9ophdeuy2FeT7fuomZ3X4jo/b2bPJ9t0m5m9u2LcNUmdT5rZRRNY52Izu9fMHjezHWZ2VTJ8Um3TMeqcVNvUzDrM7CEzeySp8wvJ8KVm9mCyPb+f3EsKM2tP+nuT8UtaXOc/mNkzFdtzRTJ84n/vPvw4p8n/Ir6XzFPAGUAb8AiwvNV1VdT3LDC/ZtiXgI1J90bgr1pQ1x8D5wHbj1YX8G7gTuJbIq8CHmxxnZ8Hrq4z7fLk998OLE3+LsIJqnMBcF7SPRP4bVLPpNqmY9Q5qbZpsl1mJN1Z4MFkO90KrEuG3wh8POn+r8CNSfc64PsTtD1Hq/MfgPfVmX7Cf+9pO0Jv5OlJk03l05y+A7xnogtw958z8nbGo9V1CfCPHnsAmG1mC1pY52guAW5x9yF3fwboJf77GHfu/nt3/1XSfRB4nPghL5Nqm45R52hask2T7XIo6c0mLwfeTvwENBi5PSf8CWlj1DmaCf+9py3QG3l6Uis5cLeZPWxm65Nhp7j77yH+BwNObll11UarazJu4w3JR9ZNFU1Wk6LO5OP+ucRHa5N2m9bUCZNsm5pZaGbbgD3AvxJ/Ojjg8RPQamtp6AlpE1Gnu5e2518m2/PLZtZeW2di3Ldn2gK9oScjtdBb3P08YA3wCTP741YXdBwm2zb+BnAmsAL4PfA3yfCW12lmM4DbgT9395fHmrTOsAmrtU6dk26bunvR3VcQP0BnJfC6MWqZNHWa2VnANcBrgRX9sPQAAAG7SURBVPOBucBnWlVn2gK9kacntYy7707e9wA/Iv7DfKH0MSt539O6CquMVtek2sbu/kLyTxQB36TcBNDSOs0sSxyS/9fdf5gMnnTbtF6dk3WbJrUdAO4jbnOebfET0GprafkT0irqXJ00bbm7DwH/hxZuz7QFeiNPT2oJM5tuZjNL3cC7gO1UP83pw8AdralwhNHq2gz8p+Qb+lXAS6VmhFaoaXN8L/E2hbjOdckZD0uBZcBDE1STET/U5XF3v75i1KTapqPVOdm2qZl1mdnspHsa8E7i9v57iZ+ABiO354Q/IW2UOp+o2IkbcTt/5fac2N/7eH/r2uwX8TfHvyVuY/tsq+upqOsM4jMEHgF2lGojbtv7KbAzeZ/bgtpuJv5onSc+avjoaHURf0y8Idm+vwG6W1znPyV1PEr8D7KgYvrPJnU+CayZwDrfSvzR+VFgW/J692TbpmPUOam2KXA28Ouknu3AtcnwM4h3KL3AD4D2ZHhH0t+bjD+jxXX+LNme24HvUj4TZsJ/77r0X0Rkikhbk4uIiIxCgS4iMkUo0EVEpggFuojIFKFAFxGZIhToIiJThAJdRGSK+P/XfIGbwMpSYAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.01193168 0.01091575 0.0203192  0.04323392 0.03271399 0.0100271\n",
      " 0.0913908  0.07076728 0.06923246 0.05559257 0.02588464 0.01590037\n",
      " 0.05447611 0.18734902 0.03224353 0.00936813 0.01602925 0.10796789\n",
      " 0.13465625]\n",
      "1.0\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "model_types = ['basic','att1','att2','att3']\n",
    "model_type = model_types[3]\n",
    "merge_types = ['avg','concat']\n",
    "merge_type = merge_types[0]\n",
    "train(train_x,train_y,test_x,test_y,feature_cnt,feature_max,model_type,epochs,merge_type,dim)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 332,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "KerasTensor(type_spec=TensorSpec(shape=(None, 6, 18), dtype=tf.float32, name=None), name='reshape/Reshape:0', description=\"created by layer 'reshape'\")\n",
      "KerasTensor(type_spec=TensorSpec(shape=(None, 18), dtype=tf.float32, name=None), name='attention/Sum:0', description=\"created by layer 'attention'\")\n",
      "KerasTensor(type_spec=TensorSpec(shape=(None, 6, 18), dtype=tf.float32, name=None), name='repeat_vector/Tile:0', description=\"created by layer 'repeat_vector'\")\n",
      "Model: \"model\"\n",
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_1 (InputLayer)            [(None, 6, 18)]      0                                            \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization (BatchNorma (None, 6, 18)        72          input_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "flatten (Flatten)               (None, 108)          0           batch_normalization[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "dense (Dense)                   (None, 108)          11772       flatten[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "reshape (Reshape)               (None, 6, 18)        0           dense[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "attention (Lambda)              (None, 18)           0           reshape[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "repeat_vector (RepeatVector)    (None, 6, 18)        0           attention[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply (Multiply)             (None, 6, 18)        0           batch_normalization[0][0]        \n",
      "                                                                 repeat_vector[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "flatten_1 (Flatten)             (None, 108)          0           multiply[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "repeat_vector_1 (RepeatVector)  (None, 1, 108)       0           flatten_1[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "lstm (LSTM)                     (None, 1, 128)       121344      repeat_vector_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "lstm_1 (LSTM)                   (None, 64)           49408       lstm[0][0]                       \n",
      "__________________________________________________________________________________________________\n",
      "dense_1 (Dense)                 (None, 32)           2080        lstm_1[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "dense_2 (Dense)                 (None, 1)            33          dense_1[0][0]                    \n",
      "==================================================================================================\n",
      "Total params: 184,709\n",
      "Trainable params: 184,673\n",
      "Non-trainable params: 36\n",
      "__________________________________________________________________________________________________\n",
      "Epoch 1/1000\n",
      "320/320 [==============================] - 5s 7ms/step - loss: 0.8572 - val_loss: 0.3097\n",
      "Epoch 2/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.2614 - val_loss: 0.2163\n",
      "Epoch 3/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.2150 - val_loss: 0.1985\n",
      "Epoch 4/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.1977 - val_loss: 0.1844\n",
      "Epoch 5/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1855 - val_loss: 0.1764\n",
      "Epoch 6/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1775 - val_loss: 0.1709\n",
      "Epoch 7/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1711 - val_loss: 0.1664\n",
      "Epoch 8/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1656 - val_loss: 0.1623\n",
      "Epoch 9/1000\n",
      "320/320 [==============================] - 1s 5ms/step - loss: 0.1605 - val_loss: 0.1587\n",
      "Epoch 10/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1563 - val_loss: 0.1555\n",
      "Epoch 11/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1524 - val_loss: 0.1524\n",
      "Epoch 12/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1488 - val_loss: 0.1495\n",
      "Epoch 13/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1455 - val_loss: 0.1470\n",
      "Epoch 14/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1425 - val_loss: 0.1449\n",
      "Epoch 15/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1399 - val_loss: 0.1430\n",
      "Epoch 16/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1376 - val_loss: 0.1412\n",
      "Epoch 17/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1354 - val_loss: 0.1395\n",
      "Epoch 18/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1335 - val_loss: 0.1380\n",
      "Epoch 19/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1317 - val_loss: 0.1365\n",
      "Epoch 20/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1301 - val_loss: 0.1351\n",
      "Epoch 21/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1285 - val_loss: 0.1338\n",
      "Epoch 22/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1270 - val_loss: 0.1326\n",
      "Epoch 23/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1257 - val_loss: 0.1314\n",
      "Epoch 24/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1244 - val_loss: 0.1303\n",
      "Epoch 25/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1231 - val_loss: 0.1292\n",
      "Epoch 26/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1220 - val_loss: 0.1281\n",
      "Epoch 27/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1209 - val_loss: 0.1271\n",
      "Epoch 28/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1198 - val_loss: 0.1262\n",
      "Epoch 29/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1188 - val_loss: 0.1253\n",
      "Epoch 30/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1178 - val_loss: 0.1245\n",
      "Epoch 31/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1169 - val_loss: 0.1236\n",
      "Epoch 32/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1160 - val_loss: 0.1228\n",
      "Epoch 33/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1151 - val_loss: 0.1220\n",
      "Epoch 34/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1143 - val_loss: 0.1212\n",
      "Epoch 35/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1134 - val_loss: 0.1205\n",
      "Epoch 36/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1126 - val_loss: 0.1198\n",
      "Epoch 37/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1118 - val_loss: 0.1191\n",
      "Epoch 38/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1110 - val_loss: 0.1184\n",
      "Epoch 39/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1103 - val_loss: 0.1177\n",
      "Epoch 40/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1095 - val_loss: 0.1170\n",
      "Epoch 41/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1088 - val_loss: 0.1164\n",
      "Epoch 42/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1080 - val_loss: 0.1157\n",
      "Epoch 43/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1073 - val_loss: 0.1151\n",
      "Epoch 44/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1066 - val_loss: 0.1145\n",
      "Epoch 45/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1058 - val_loss: 0.1139\n",
      "Epoch 46/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1051 - val_loss: 0.1133\n",
      "Epoch 47/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1044 - val_loss: 0.1127\n",
      "Epoch 48/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1037 - val_loss: 0.1121\n",
      "Epoch 49/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1030 - val_loss: 0.1115\n",
      "Epoch 50/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1023 - val_loss: 0.1109\n",
      "Epoch 51/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1016 - val_loss: 0.1103\n",
      "Epoch 52/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1010 - val_loss: 0.1098\n",
      "Epoch 53/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.1003 - val_loss: 0.1092\n",
      "Epoch 54/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0996 - val_loss: 0.1087\n",
      "Epoch 55/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0989 - val_loss: 0.1082\n",
      "Epoch 56/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0983 - val_loss: 0.1076\n",
      "Epoch 57/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0976 - val_loss: 0.1071\n",
      "Epoch 58/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0970 - val_loss: 0.1066\n",
      "Epoch 59/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0963 - val_loss: 0.1061\n",
      "Epoch 60/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0957 - val_loss: 0.1057\n",
      "Epoch 61/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0951 - val_loss: 0.1052\n",
      "Epoch 62/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0944 - val_loss: 0.1048\n",
      "Epoch 63/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0938 - val_loss: 0.1043\n",
      "Epoch 64/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0932 - val_loss: 0.1039\n",
      "Epoch 65/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0926 - val_loss: 0.1035\n",
      "Epoch 66/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0920 - val_loss: 0.1031\n",
      "Epoch 67/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0914 - val_loss: 0.1028\n",
      "Epoch 68/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0908 - val_loss: 0.1024\n",
      "Epoch 69/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0902 - val_loss: 0.1021\n",
      "Epoch 70/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0896 - val_loss: 0.1018\n",
      "Epoch 71/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0891 - val_loss: 0.1015\n",
      "Epoch 72/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0885 - val_loss: 0.1012\n",
      "Epoch 73/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0880 - val_loss: 0.1009\n",
      "Epoch 74/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0874 - val_loss: 0.1007\n",
      "Epoch 75/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0869 - val_loss: 0.1004\n",
      "Epoch 76/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0864 - val_loss: 0.1002\n",
      "Epoch 77/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0858 - val_loss: 0.1000\n",
      "Epoch 78/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0853 - val_loss: 0.0998\n",
      "Epoch 79/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0848 - val_loss: 0.0996\n",
      "Epoch 80/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0843 - val_loss: 0.0995\n",
      "Epoch 81/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0839 - val_loss: 0.0993\n",
      "Epoch 82/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0834 - val_loss: 0.0992\n",
      "Epoch 83/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0829 - val_loss: 0.0990\n",
      "Epoch 84/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0825 - val_loss: 0.0989\n",
      "Epoch 85/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0820 - val_loss: 0.0988\n",
      "Epoch 86/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0816 - val_loss: 0.0987\n",
      "Epoch 87/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0811 - val_loss: 0.0986\n",
      "Epoch 88/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0807 - val_loss: 0.0985\n",
      "Epoch 89/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0803 - val_loss: 0.0984\n",
      "Epoch 90/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0798 - val_loss: 0.0983\n",
      "Epoch 91/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0794 - val_loss: 0.0983\n",
      "Epoch 92/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0790 - val_loss: 0.0982\n",
      "Epoch 93/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0786 - val_loss: 0.0981\n",
      "Epoch 94/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0782 - val_loss: 0.0981\n",
      "Epoch 95/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0779 - val_loss: 0.0980\n",
      "Epoch 96/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0775 - val_loss: 0.0980\n",
      "Epoch 97/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0771 - val_loss: 0.0980\n",
      "Epoch 98/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0768 - val_loss: 0.0979\n",
      "Epoch 99/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0764 - val_loss: 0.0979\n",
      "Epoch 100/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0760 - val_loss: 0.0979\n",
      "Epoch 101/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0757 - val_loss: 0.0979\n",
      "Epoch 102/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0754 - val_loss: 0.0979\n",
      "Epoch 103/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0750 - val_loss: 0.0979\n",
      "Epoch 104/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0747 - val_loss: 0.0979\n",
      "Epoch 105/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0744 - val_loss: 0.0979\n",
      "Epoch 106/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0741 - val_loss: 0.0979\n",
      "Epoch 107/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0738 - val_loss: 0.0979\n",
      "Epoch 108/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0734 - val_loss: 0.0979\n",
      "Epoch 109/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0731 - val_loss: 0.0979\n",
      "Epoch 110/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0728 - val_loss: 0.0979\n",
      "Epoch 111/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0725 - val_loss: 0.0980\n",
      "Epoch 112/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0723 - val_loss: 0.0980\n",
      "Epoch 113/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0720 - val_loss: 0.0980\n",
      "Epoch 114/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0717 - val_loss: 0.0980\n",
      "Epoch 115/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0714 - val_loss: 0.0981\n",
      "Epoch 116/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0711 - val_loss: 0.0981\n",
      "Epoch 117/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0709 - val_loss: 0.0981\n",
      "Epoch 118/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0706 - val_loss: 0.0982\n",
      "Epoch 119/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0703 - val_loss: 0.0982\n",
      "Epoch 120/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0701 - val_loss: 0.0982\n",
      "Epoch 121/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0698 - val_loss: 0.0982\n",
      "Epoch 122/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0695 - val_loss: 0.0983\n",
      "Epoch 123/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0693 - val_loss: 0.0983\n",
      "Epoch 124/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0690 - val_loss: 0.0983\n",
      "Epoch 125/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0688 - val_loss: 0.0984\n",
      "Epoch 126/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0685 - val_loss: 0.0984\n",
      "Epoch 127/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0683 - val_loss: 0.0984\n",
      "Epoch 128/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0680 - val_loss: 0.0985\n",
      "Epoch 129/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0678 - val_loss: 0.0985\n",
      "Epoch 130/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0676 - val_loss: 0.0985\n",
      "Epoch 131/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0673 - val_loss: 0.0986\n",
      "Epoch 132/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0671 - val_loss: 0.0986\n",
      "Epoch 133/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0669 - val_loss: 0.0986\n",
      "Epoch 134/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0667 - val_loss: 0.0987\n",
      "Epoch 135/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0665 - val_loss: 0.0987\n",
      "Epoch 136/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0662 - val_loss: 0.0988\n",
      "Epoch 137/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0660 - val_loss: 0.0988\n",
      "Epoch 138/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0658 - val_loss: 0.0989\n",
      "Epoch 139/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0656 - val_loss: 0.0989\n",
      "Epoch 140/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0654 - val_loss: 0.0990\n",
      "Epoch 141/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0652 - val_loss: 0.0990\n",
      "Epoch 142/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0650 - val_loss: 0.0991\n",
      "Epoch 143/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0648 - val_loss: 0.0991\n",
      "Epoch 144/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0646 - val_loss: 0.0993\n",
      "Epoch 145/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0644 - val_loss: 0.0992\n",
      "Epoch 146/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0642 - val_loss: 0.0994\n",
      "Epoch 147/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0640 - val_loss: 0.0993\n",
      "Epoch 148/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0638 - val_loss: 0.0995\n",
      "Epoch 149/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0637 - val_loss: 0.0994\n",
      "Epoch 150/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0635 - val_loss: 0.0997\n",
      "Epoch 151/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0633 - val_loss: 0.0996\n",
      "Epoch 152/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0631 - val_loss: 0.0999\n",
      "Epoch 153/1000\n",
      "320/320 [==============================] - 2s 5ms/step - loss: 0.0630 - val_loss: 0.0997\n",
      "Epoch 00153: early stopping\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3df5xcdX3v8ddnfuzvTTbZ3ZDfJEAAU34FIwXRihYkAQ14sTQg9+qj7Y193EJpLVZSa1rpP972VpF7EUXLvb1FoYhWow2FonC1CJigEZJAzAKBbALJ5sdmf/+a+dw/zpmd2dnZ7CTZ3ZmzeT8fj3mcc77nzOxnz2be55vvnHPG3B0REYm+WKkLEBGRiaFAFxGZJhToIiLThAJdRGSaUKCLiEwTiVL94KamJl+yZEmpfryISCS98MILB929udC6kgX6kiVL2LJlS6l+vIhIJJnZG2Ot05CLiMg0oUAXEZkmFOgiItNEycbQRUROxODgIK2trfT19ZW6lElVVVXFwoULSSaTRT9HgS4ikdLa2kp9fT1LlizBzEpdzqRwdw4dOkRraytLly4t+nlFDbmY2Soz22lmLWZ2Z4H1XzKzreHj12bWfhy1i4gUra+vj8bGxmkb5gBmRmNj43H/L2TcHrqZxYF7gauAVmCzmW109x2Zbdz9T3O2vw1YcVxViIgch+kc5hkn8jsW00O/BGhx99fcfQB4GLjuGNvfBDx03JUUafPuw/z9EzsZTKUn60eIiERSMYG+ANiTs9wato1iZqcDS4Efj7F+nZltMbMtbW1tx1srAL944wj/88ctCnQRKYn29na+8pWvHPfzrrnmGtrbJ3c0uphAL9TvH+tbMdYCj7p7qtBKd7/f3Ve6+8rm5oJXro4rHgvKGUrrizlEZOqNFeipVMHYG7Zp0yYaGhomqyyguLNcWoFFOcsLgX1jbLsW+KOTLepYMoGeVqCLSAnceeedvPrqq1x00UUkk0nq6uqYN28eW7duZceOHVx//fXs2bOHvr4+br/9dtatWwdkb3fS1dXF6tWrec973sPPfvYzFixYwPe//32qq6tPurZiAn0zsMzMlgJ7CUL75vyNzOwcYBbw7ElXdQzqoYtIxud/sJ0d+zom9DWXz5/BX334N8Zc/4UvfIFt27axdetWnn76aa699lq2bds2fHrhAw88wOzZs+nt7eVd73oXN9xwA42NjSNeY9euXTz00EN8/etf58Ybb+Q73/kOt9xyy0nXPu6Qi7sPAbcCjwMvA4+4+3Yzu8vM1uRsehPwsE/yl5Sqhy4i5eSSSy4Zca74Pffcw4UXXsill17Knj172LVr16jnLF26lIsuugiAd77znezevXtCainqwiJ33wRsymvbkLf81xNS0Tjiph66iASO1ZOeKrW1tcPzTz/9NE8++STPPvssNTU1XHHFFQXPJa+srByej8fj9Pb2TkgtkbuXS6aHnlKgi0gJ1NfX09nZWXDd0aNHmTVrFjU1Nbzyyis899xzU1pb5C79T8QV6CJSOo2NjVx++eWcd955VFdXc9pppw2vW7VqFV/96le54IILOOecc7j00kuntLbIBXpMQy4iUmLf+ta3CrZXVlby2GOPFVyXGSdvampi27Ztw+133HHHhNUVuSGXRCwoOT25n72KiERO5AI9HlY8lFKgi4jkimCgq4cuIlJIBAM9mGoMXURkpAgGelCyznIRERkpeoFuOm1RRKSQ6AW6LiwSkRI60dvnAtx999309PRMcEVZCnQRkeNQzoEeuQuLhgNdZ7mISAnk3j73qquuYs6cOTzyyCP09/fzkY98hM9//vN0d3dz44030traSiqV4nOf+xz79+9n3759vP/976epqYmnnnpqwmuLbqCn9Y1FIqe8x+6Et1+a2Necez6s/sKYq3Nvn/vEE0/w6KOP8vOf/xx3Z82aNfzkJz+hra2N+fPn86//+q9AcI+XmTNn8sUvfpGnnnqKpqamia05FLkhl8RwoJe4EBE55T3xxBM88cQTrFixgosvvphXXnmFXbt2cf755/Pkk0/ymc98hp/+9KfMnDlzSuqJXA89Zuqhi0joGD3pqeDurF+/nk9+8pOj1r3wwgts2rSJ9evX88EPfpANGzYUeIWJFb0eelw9dBEpndzb51599dU88MADdHV1AbB3714OHDjAvn37qKmp4ZZbbuGOO+7gF7/4xajnTobI9dCzX0GnRBeRqZd7+9zVq1dz8803c9lllwFQV1fHgw8+SEtLC5/+9KeJxWIkk0nuu+8+ANatW8fq1auZN2+ePhSF7IVFupeLiJRK/u1zb7/99hHLZ555JldfffWo5912223cdtttk1ZX5IZchnvoutuiiMgIkQ10XVgkIjJS5AI9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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.03733736 0.02765955 0.00736424 0.03818703 0.07992969 0.01290206\n",
      " 0.03177275 0.03872526 0.01277539 0.01875308 0.02569833 0.05432397\n",
      " 0.24723226 0.1973689  0.01862607 0.05194494 0.08182535 0.01757385]\n",
      "1.0\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "model_types = ['basic','att1','att2','att3']\n",
    "model_type = model_types[3]\n",
    "merge_types = ['avg','concat']\n",
    "merge_type = merge_types[0]\n",
    "train(train_x,train_y,test_x,test_y,feature_cnt,feature_max,model_type,epochs,merge_type,dim)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 273,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tensor(\"reshape/Reshape:0\", shape=(?, 6, 18), dtype=float32)\n",
      "Tensor(\"attention/Sum:0\", shape=(?, 18), dtype=float32)\n",
      "Tensor(\"repeat_vector/Tile:0\", shape=(?, 6, 18), dtype=float32)\n",
      "Model: \"model\"\n",
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_1 (InputLayer)            [(None, 6, 18)]      0                                            \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization (BatchNorma (None, 6, 18)        72          input_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "flatten (Flatten)               (None, 108)          0           batch_normalization[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "dense (Dense)                   (None, 108)          11772       flatten[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "reshape (Reshape)               (None, 6, 18)        0           dense[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "attention (Lambda)              (None, 18)           0           reshape[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "repeat_vector (RepeatVector)    (None, 6, 18)        0           attention[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply (Multiply)             (None, 6, 18)        0           batch_normalization[0][0]        \n",
      "                                                                 repeat_vector[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "flatten_1 (Flatten)             (None, 108)          0           multiply[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "repeat_vector_1 (RepeatVector)  (None, 1, 108)       0           flatten_1[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "lstm (LSTM)                     (None, 1, 128)       121344      repeat_vector_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "lstm_1 (LSTM)                   (None, 64)           49408       lstm[0][0]                       \n",
      "__________________________________________________________________________________________________\n",
      "dense_1 (Dense)                 (None, 32)           2080        lstm_1[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "dense_2 (Dense)                 (None, 1)            33          dense_1[0][0]                    \n",
      "==================================================================================================\n",
      "Total params: 184,709\n",
      "Trainable params: 184,673\n",
      "Non-trainable params: 36\n",
      "__________________________________________________________________________________________________\n",
      "Train on 20424 samples, validate on 5106 samples\n",
      "Epoch 1/1000\n",
      "20424/20424 [==============================] - 5s 266us/sample - loss: 0.7101 - val_loss: 0.3082\n",
      "Epoch 2/1000\n",
      "20424/20424 [==============================] - 5s 227us/sample - loss: 0.2217 - val_loss: 0.2023\n",
      "Epoch 3/1000\n",
      "20424/20424 [==============================] - 5s 226us/sample - loss: 0.1944 - val_loss: 0.1910\n",
      "Epoch 4/1000\n",
      "20424/20424 [==============================] - 5s 227us/sample - loss: 0.1835 - val_loss: 0.1824\n",
      "Epoch 5/1000\n",
      "20424/20424 [==============================] - 5s 226us/sample - loss: 0.1739 - val_loss: 0.1757\n",
      "Epoch 6/1000\n",
      "20424/20424 [==============================] - 5s 227us/sample - loss: 0.1665 - val_loss: 0.1706\n",
      "Epoch 7/1000\n",
      "20424/20424 [==============================] - 5s 227us/sample - loss: 0.1606 - val_loss: 0.1667\n",
      "Epoch 8/1000\n",
      "20424/20424 [==============================] - 5s 227us/sample - loss: 0.1557 - val_loss: 0.1634\n",
      "Epoch 9/1000\n",
      "20424/20424 [==============================] - 5s 227us/sample - loss: 0.1515 - val_loss: 0.1605\n",
      "Epoch 10/1000\n",
      "20424/20424 [==============================] - 5s 227us/sample - loss: 0.1478 - val_loss: 0.1580\n",
      "Epoch 11/1000\n",
      "20424/20424 [==============================] - 5s 229us/sample - loss: 0.1444 - val_loss: 0.1556\n",
      "Epoch 12/1000\n",
      "20424/20424 [==============================] - 5s 229us/sample - loss: 0.1414 - val_loss: 0.1534\n",
      "Epoch 13/1000\n",
      "20424/20424 [==============================] - 5s 229us/sample - loss: 0.1386 - val_loss: 0.1513\n",
      "Epoch 14/1000\n",
      "20424/20424 [==============================] - 5s 229us/sample - loss: 0.1359 - val_loss: 0.1491\n",
      "Epoch 15/1000\n",
      "20424/20424 [==============================] - 5s 230us/sample - loss: 0.1333 - val_loss: 0.1470\n",
      "Epoch 16/1000\n",
      "20424/20424 [==============================] - 5s 230us/sample - loss: 0.1309 - val_loss: 0.1451\n",
      "Epoch 17/1000\n",
      "20424/20424 [==============================] - 5s 231us/sample - loss: 0.1287 - val_loss: 0.1433\n",
      "Epoch 18/1000\n",
      "20424/20424 [==============================] - 5s 232us/sample - loss: 0.1268 - val_loss: 0.1417\n",
      "Epoch 19/1000\n",
      "20424/20424 [==============================] - 5s 231us/sample - loss: 0.1250 - val_loss: 0.1401\n",
      "Epoch 20/1000\n",
      "20424/20424 [==============================] - 5s 232us/sample - loss: 0.1234 - val_loss: 0.1387\n",
      "Epoch 21/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1220 - val_loss: 0.1373\n",
      "Epoch 22/1000\n",
      "20424/20424 [==============================] - 5s 233us/sample - loss: 0.1206 - val_loss: 0.1360\n",
      "Epoch 23/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1193 - val_loss: 0.1348\n",
      "Epoch 24/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1181 - val_loss: 0.1336\n",
      "Epoch 25/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1170 - val_loss: 0.1325\n",
      "Epoch 26/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1159 - val_loss: 0.1314\n",
      "Epoch 27/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1149 - val_loss: 0.1305\n",
      "Epoch 28/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1139 - val_loss: 0.1295\n",
      "Epoch 29/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1129 - val_loss: 0.1286\n",
      "Epoch 30/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1120 - val_loss: 0.1276\n",
      "Epoch 31/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1111 - val_loss: 0.1268\n",
      "Epoch 32/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.1103 - val_loss: 0.1259\n",
      "Epoch 33/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.1094 - val_loss: 0.1251\n",
      "Epoch 34/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1086 - val_loss: 0.1243\n",
      "Epoch 35/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1078 - val_loss: 0.1235\n",
      "Epoch 36/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1070 - val_loss: 0.1227\n",
      "Epoch 37/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.1063 - val_loss: 0.1220\n",
      "Epoch 38/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1055 - val_loss: 0.1213\n",
      "Epoch 39/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.1048 - val_loss: 0.1206\n",
      "Epoch 40/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.1041 - val_loss: 0.1199\n",
      "Epoch 41/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.1034 - val_loss: 0.1193\n",
      "Epoch 42/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1027 - val_loss: 0.1186\n",
      "Epoch 43/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.1020 - val_loss: 0.1180\n",
      "Epoch 44/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.1014 - val_loss: 0.1174\n",
      "Epoch 45/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.1007 - val_loss: 0.1168\n",
      "Epoch 46/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.1001 - val_loss: 0.1162\n",
      "Epoch 47/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0995 - val_loss: 0.1157\n",
      "Epoch 48/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0989 - val_loss: 0.1152\n",
      "Epoch 49/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0983 - val_loss: 0.1147\n",
      "Epoch 50/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0977 - val_loss: 0.1142\n",
      "Epoch 51/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0971 - val_loss: 0.1138\n",
      "Epoch 52/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0965 - val_loss: 0.1133\n",
      "Epoch 53/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0959 - val_loss: 0.1129\n",
      "Epoch 54/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0953 - val_loss: 0.1125\n",
      "Epoch 55/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0947 - val_loss: 0.1121\n",
      "Epoch 56/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0942 - val_loss: 0.1117\n",
      "Epoch 57/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0936 - val_loss: 0.1114\n",
      "Epoch 58/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0930 - val_loss: 0.1111\n",
      "Epoch 59/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0925 - val_loss: 0.1107\n",
      "Epoch 60/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0920 - val_loss: 0.1104\n",
      "Epoch 61/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0914 - val_loss: 0.1101\n",
      "Epoch 62/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0909 - val_loss: 0.1099\n",
      "Epoch 63/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0904 - val_loss: 0.1096\n",
      "Epoch 64/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0899 - val_loss: 0.1093\n",
      "Epoch 65/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0894 - val_loss: 0.1091\n",
      "Epoch 66/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0889 - val_loss: 0.1088\n",
      "Epoch 67/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0884 - val_loss: 0.1086\n",
      "Epoch 68/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0880 - val_loss: 0.1084\n",
      "Epoch 69/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0875 - val_loss: 0.1082\n",
      "Epoch 70/1000\n",
      "20424/20424 [==============================] - 5s 240us/sample - loss: 0.0871 - val_loss: 0.1080\n",
      "Epoch 71/1000\n",
      "20424/20424 [==============================] - 5s 239us/sample - loss: 0.0866 - val_loss: 0.1078\n",
      "Epoch 72/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0862 - val_loss: 0.1076\n",
      "Epoch 73/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0857 - val_loss: 0.1075\n",
      "Epoch 74/1000\n",
      "20424/20424 [==============================] - 5s 242us/sample - loss: 0.0853 - val_loss: 0.1073\n",
      "Epoch 75/1000\n",
      "20424/20424 [==============================] - 5s 246us/sample - loss: 0.0849 - val_loss: 0.1071\n",
      "Epoch 76/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0845 - val_loss: 0.1070\n",
      "Epoch 77/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0841 - val_loss: 0.1069\n",
      "Epoch 78/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0837 - val_loss: 0.1068\n",
      "Epoch 79/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0833 - val_loss: 0.1066\n",
      "Epoch 80/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0829 - val_loss: 0.1065\n",
      "Epoch 81/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0826 - val_loss: 0.1064\n",
      "Epoch 82/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0822 - val_loss: 0.1063\n",
      "Epoch 83/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0818 - val_loss: 0.1062\n",
      "Epoch 84/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0815 - val_loss: 0.1061\n",
      "Epoch 85/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0811 - val_loss: 0.1061\n",
      "Epoch 86/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0808 - val_loss: 0.1060\n",
      "Epoch 87/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0804 - val_loss: 0.1059\n",
      "Epoch 88/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0801 - val_loss: 0.1058\n",
      "Epoch 89/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0798 - val_loss: 0.1058\n",
      "Epoch 90/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0794 - val_loss: 0.1057\n",
      "Epoch 91/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0791 - val_loss: 0.1056\n",
      "Epoch 92/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0788 - val_loss: 0.1056\n",
      "Epoch 93/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0785 - val_loss: 0.1055\n",
      "Epoch 94/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0782 - val_loss: 0.1055\n",
      "Epoch 95/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0778 - val_loss: 0.1054\n",
      "Epoch 96/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0775 - val_loss: 0.1054\n",
      "Epoch 97/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0772 - val_loss: 0.1054\n",
      "Epoch 98/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0769 - val_loss: 0.1053\n",
      "Epoch 99/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0766 - val_loss: 0.1053\n",
      "Epoch 100/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0763 - val_loss: 0.1053\n",
      "Epoch 101/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0760 - val_loss: 0.1052\n",
      "Epoch 102/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0757 - val_loss: 0.1052\n",
      "Epoch 103/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0755 - val_loss: 0.1051\n",
      "Epoch 104/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0752 - val_loss: 0.1051\n",
      "Epoch 105/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0749 - val_loss: 0.1051\n",
      "Epoch 106/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0746 - val_loss: 0.1050\n",
      "Epoch 107/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0743 - val_loss: 0.1050\n",
      "Epoch 108/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0741 - val_loss: 0.1049\n",
      "Epoch 109/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0738 - val_loss: 0.1049\n",
      "Epoch 110/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0736 - val_loss: 0.1049\n",
      "Epoch 111/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0733 - val_loss: 0.1049\n",
      "Epoch 112/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0730 - val_loss: 0.1048\n",
      "Epoch 113/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0728 - val_loss: 0.1048\n",
      "Epoch 114/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0725 - val_loss: 0.1047\n",
      "Epoch 115/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0723 - val_loss: 0.1047\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 116/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0721 - val_loss: 0.1047\n",
      "Epoch 117/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0718 - val_loss: 0.1047\n",
      "Epoch 118/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0716 - val_loss: 0.1046\n",
      "Epoch 119/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0714 - val_loss: 0.1046\n",
      "Epoch 120/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0711 - val_loss: 0.1045\n",
      "Epoch 121/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0709 - val_loss: 0.1045\n",
      "Epoch 122/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0707 - val_loss: 0.1044\n",
      "Epoch 123/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0705 - val_loss: 0.1044\n",
      "Epoch 124/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0703 - val_loss: 0.1044\n",
      "Epoch 125/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0701 - val_loss: 0.1044\n",
      "Epoch 126/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0699 - val_loss: 0.1044\n",
      "Epoch 127/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0697 - val_loss: 0.1044\n",
      "Epoch 128/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0694 - val_loss: 0.1044\n",
      "Epoch 129/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0692 - val_loss: 0.1044\n",
      "Epoch 130/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0690 - val_loss: 0.1044\n",
      "Epoch 131/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0688 - val_loss: 0.1044\n",
      "Epoch 132/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0686 - val_loss: 0.1045\n",
      "Epoch 133/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0685 - val_loss: 0.1045\n",
      "Epoch 134/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0683 - val_loss: 0.1045\n",
      "Epoch 135/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0681 - val_loss: 0.1045\n",
      "Epoch 136/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0679 - val_loss: 0.1046\n",
      "Epoch 137/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0677 - val_loss: 0.1046\n",
      "Epoch 138/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0675 - val_loss: 0.1047\n",
      "Epoch 139/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0673 - val_loss: 0.1045\n",
      "Epoch 140/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0671 - val_loss: 0.1048\n",
      "Epoch 141/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0670 - val_loss: 0.1045\n",
      "Epoch 142/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0668 - val_loss: 0.1051\n",
      "Epoch 143/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0666 - val_loss: 0.1044\n",
      "Epoch 144/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0664 - val_loss: 0.1053\n",
      "Epoch 145/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0663 - val_loss: 0.1043\n",
      "Epoch 146/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0661 - val_loss: 0.1057\n",
      "Epoch 147/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0659 - val_loss: 0.1042\n",
      "Epoch 148/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0657 - val_loss: 0.1058\n",
      "Epoch 149/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0656 - val_loss: 0.1042\n",
      "Epoch 150/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0654 - val_loss: 0.1057\n",
      "Epoch 151/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0652 - val_loss: 0.1043\n",
      "Epoch 152/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0651 - val_loss: 0.1056\n",
      "Epoch 153/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0649 - val_loss: 0.1043\n",
      "Epoch 154/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0647 - val_loss: 0.1056\n",
      "Epoch 155/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0645 - val_loss: 0.1043\n",
      "Epoch 156/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0644 - val_loss: 0.1056\n",
      "Epoch 157/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0642 - val_loss: 0.1043\n",
      "Epoch 158/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0640 - val_loss: 0.1056\n",
      "Epoch 159/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0639 - val_loss: 0.1042\n",
      "Epoch 160/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0637 - val_loss: 0.1055\n",
      "Epoch 161/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0635 - val_loss: 0.1042\n",
      "Epoch 162/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0634 - val_loss: 0.1053\n",
      "Epoch 163/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0632 - val_loss: 0.1041\n",
      "Epoch 164/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0630 - val_loss: 0.1051\n",
      "Epoch 165/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0629 - val_loss: 0.1040\n",
      "Epoch 166/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0627 - val_loss: 0.1049\n",
      "Epoch 167/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0625 - val_loss: 0.1040\n",
      "Epoch 168/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0624 - val_loss: 0.1048\n",
      "Epoch 169/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0622 - val_loss: 0.1039\n",
      "Epoch 170/1000\n",
      "20424/20424 [==============================] - 5s 233us/sample - loss: 0.0621 - val_loss: 0.1046\n",
      "Epoch 171/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0619 - val_loss: 0.1039\n",
      "Epoch 172/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0617 - val_loss: 0.1045\n",
      "Epoch 173/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0616 - val_loss: 0.1038\n",
      "Epoch 174/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0614 - val_loss: 0.1044\n",
      "Epoch 175/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0613 - val_loss: 0.1038\n",
      "Epoch 176/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0611 - val_loss: 0.1043\n",
      "Epoch 177/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0610 - val_loss: 0.1036\n",
      "Epoch 178/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0609 - val_loss: 0.1043\n",
      "Epoch 179/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0607 - val_loss: 0.1036\n",
      "Epoch 180/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0606 - val_loss: 0.1043\n",
      "Epoch 181/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0604 - val_loss: 0.1036\n",
      "Epoch 182/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0603 - val_loss: 0.1043\n",
      "Epoch 183/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0602 - val_loss: 0.1037\n",
      "Epoch 184/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0600 - val_loss: 0.1043\n",
      "Epoch 185/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0599 - val_loss: 0.1037\n",
      "Epoch 186/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0598 - val_loss: 0.1044\n",
      "Epoch 187/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0596 - val_loss: 0.1039\n",
      "Epoch 188/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0595 - val_loss: 0.1046\n",
      "Epoch 189/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0594 - val_loss: 0.1040\n",
      "Epoch 190/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0592 - val_loss: 0.1046\n",
      "Epoch 191/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0591 - val_loss: 0.1041\n",
      "Epoch 192/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0590 - val_loss: 0.1048\n",
      "Epoch 193/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0588 - val_loss: 0.1042\n",
      "Epoch 194/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0587 - val_loss: 0.1050\n",
      "Epoch 195/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0586 - val_loss: 0.1045\n",
      "Epoch 196/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0585 - val_loss: 0.1052\n",
      "Epoch 197/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0583 - val_loss: 0.1047\n",
      "Epoch 198/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0582 - val_loss: 0.1053\n",
      "Epoch 199/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0581 - val_loss: 0.1049\n",
      "Epoch 200/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0580 - val_loss: 0.1055\n",
      "Epoch 201/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0578 - val_loss: 0.1051\n",
      "Epoch 202/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0577 - val_loss: 0.1056\n",
      "Epoch 203/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0576 - val_loss: 0.1053\n",
      "Epoch 204/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0575 - val_loss: 0.1053\n",
      "Epoch 205/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0573 - val_loss: 0.1060\n",
      "Epoch 206/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0572 - val_loss: 0.1050\n",
      "Epoch 207/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0571 - val_loss: 0.1063\n",
      "Epoch 208/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0570 - val_loss: 0.1055\n",
      "Epoch 209/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0569 - val_loss: 0.1060\n",
      "Epoch 210/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0567 - val_loss: 0.1063\n",
      "Epoch 211/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0566 - val_loss: 0.1059\n",
      "Epoch 212/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0565 - val_loss: 0.1060\n",
      "Epoch 213/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0563 - val_loss: 0.1063\n",
      "Epoch 214/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0563 - val_loss: 0.1062\n",
      "Epoch 215/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0561 - val_loss: 0.1069\n",
      "Epoch 216/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0560 - val_loss: 0.1063\n",
      "Epoch 217/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0559 - val_loss: 0.1066\n",
      "Epoch 218/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0559 - val_loss: 0.1074\n",
      "Epoch 219/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0558 - val_loss: 0.1063\n",
      "Epoch 220/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0555 - val_loss: 0.1073\n",
      "Epoch 221/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0554 - val_loss: 0.1072\n",
      "Epoch 222/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0553 - val_loss: 0.1070\n",
      "Epoch 223/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0552 - val_loss: 0.1074\n",
      "Epoch 224/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0551 - val_loss: 0.1070\n",
      "Epoch 225/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0550 - val_loss: 0.1075\n",
      "Epoch 226/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0549 - val_loss: 0.1075\n",
      "Epoch 227/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.0548 - val_loss: 0.1079\n",
      "Epoch 00227: early stopping\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3de3hc9X3n8fd3LtJodJclX2UjA4ZgDBhsCCRpHmgSsEkDuZUCpZt0uzjbBpo2JY3ZtGxCn+6m6TbJ0geSJS1Ns2lgKWkat3GKSwKBNiFgUwI2YCzAYCFfZNmy7tJcfvvHbySNRiNrbEYendHn9TznOXPO+enMd47Hn3PmN2fOMeccIiISfKFSFyAiIsWhQBcRKRMKdBGRMqFAFxEpEwp0EZEyESnVEzc3N7u2trZSPb2ISCDt2LHjsHOuJd+ykgV6W1sb27dvL9XTi4gEkpm9Pt0ydbmIiJQJBbqISJlQoIuIlImS9aGLiJyMRCJBR0cHw8PDpS5lVsViMVpbW4lGowX/jQJdRAKlo6OD2tpa2traMLNSlzMrnHN0d3fT0dHBypUrC/47dbmISKAMDw+zYMGCsg1zADNjwYIFJ/wpRIEuIoFTzmE+5mReY+AC/em9R/jytt0kUulSlyIiMqcUFOhmtsHMdptZu5ltzrP8K2b2bGZ42cx6il+q98zrR7nrx+0KdBEpiZ6eHu65554T/rurr76anp5Zi0aggEA3szBwN7ARWA3cYGars9s4537fObfWObcW+EvgH2ajWIBQ5mNIWvflEJESmC7QU6nUcf9u69atNDQ0zFZZQGFH6JcA7c65V51zo8ADwLXHaX8DcH8xistnrFsppUQXkRLYvHkzr7zyCmvXruXiiy/miiuu4MYbb+S8884D4IMf/CDr1q3j3HPP5d577x3/u7a2Ng4fPszevXs555xzuPnmmzn33HO58sorGRoaKkpthZy2uAzYlzXdAbw9X0MzOw1YCfx4muWbgE0AK1asOKFCx4RDPtF16zwR+cI/7eKFzt6irnP10jr++wfOnXb5F7/4RXbu3Mmzzz7LY489xvvf/3527tw5fnrhfffdR1NTE0NDQ1x88cV85CMfYcGCBZPWsWfPHu6//36+8Y1vcN111/Hd736Xm2666S3XXsgRer6vWqdL0+uBh5xzeT97OOfudc6td86tb2nJe7GwGanLRUTmkksuuWTSueJ33XUXF1xwAZdeein79u1jz549U/5m5cqVrF27FoB169axd+/eotRSyBF6B7A8a7oV6Jym7fXAJ99qUccTUpeLiGQc70j6VKmurh5//Nhjj/HII4/ws5/9jHg8zuWXX573XPLKysrxx+FwuGhdLoUcoT8NrDKzlWZWgQ/tLbmNzOxsoBH4WVEqm0ZIXS4iUkK1tbX09fXlXXbs2DEaGxuJx+O89NJLPPnkk6e0thmP0J1zSTO7BXgYCAP3Oed2mdmdwHbn3Fi43wA84GY5adXlIiKltGDBAt75zneyZs0aqqqqWLRo0fiyDRs28PWvf53zzz+fs88+m0svvfSU1lbQtVycc1uBrTnz7siZ/nzxypreeJeLjtBFpES+853v5J1fWVnJD3/4w7zLxvrJm5ub2blz5/j82267rWh1Be6XouNH6DpEFxGZJLCBrgN0EZHJghfomYrV5SIiMlnwAn38S1EFuohItuAGuvrQRUQmCW6gK89FRCYJXKCHMxWry0VESuFkL58L8NWvfpXBwcEiVzQhcIE+dhcP/fRfREphLgd64G4SHdZpiyJSQtmXz33f+97HwoULefDBBxkZGeFDH/oQX/jCFxgYGOC6666jo6ODVCrFH//xH3Pw4EE6Ozu54ooraG5u5tFHHy16bYEL9JC6XERkzA83w4Hni7vOxefBxi9Ouzj78rnbtm3joYce4qmnnsI5xzXXXMPjjz9OV1cXS5cu5Qc/+AHgr/FSX1/Pl7/8ZR599FGam5uLW3NGcLtcFOgiUmLbtm1j27ZtXHjhhVx00UW89NJL7Nmzh/POO49HHnmEz372szzxxBPU19efknoCd4Q+0eWiQBeZ945zJH0qOOe4/fbb+cQnPjFl2Y4dO9i6dSu33347V155JXfccUeeNRRX4I7QddqiiJRS9uVzr7rqKu677z76+/sBePPNNzl06BCdnZ3E43FuuukmbrvtNp555pkpfzsbAneErhtciEgpZV8+d+PGjdx4441cdtllANTU1PDtb3+b9vZ2PvOZzxAKhYhGo3zta18DYNOmTWzcuJElS5boS1GYuMGFvhQVkVLJvXzupz71qUnTZ5xxBlddddWUv7v11lu59dZbZ62uwHa5KM9FRCYLYKD7sbpcREQmC16gq8tFZN6bD2e5ncxrDF6gq8tFZF6LxWJ0d3eXdag75+ju7iYWi53Q3wXvS1F1uYjMa62trXR0dNDV1VXqUmZVLBajtbX1hP4mgIGuLheR+SwajbJy5cpSlzEnFdTlYmYbzGy3mbWb2eZp2lxnZi+Y2S4zy39L7CLQD4tERPKb8QjdzMLA3cD7gA7gaTPb4px7IavNKuB24J3OuaNmtnC2CtbFuURE8ivkCP0SoN0596pzbhR4ALg2p83NwN3OuaMAzrlDxS1zQlhdLiIieRUS6MuAfVnTHZl52c4CzjKzfzezJ81sQ74VmdkmM9tuZttP9gsNU5eLiEhehQS65ZmXG6cRYBVwOXAD8Fdm1jDlj5y71zm33jm3vqWl5URrBSbOctFNokVEJisk0DuA5VnTrUBnnjbfd84lnHOvAbvxAV90Yf2wSEQkr0IC/WlglZmtNLMK4HpgS06bfwSuADCzZnwXzKvFLHSMznIREclvxkB3ziWBW4CHgReBB51zu8zsTjO7JtPsYaDbzF4AHgU+45zrno2CTV0uIiJ5FfTDIufcVmBrzrw7sh474NOZYVapy0VEJL/AXstFB+giIpMFLtDHulx0k2gRkckCF+i6SbSISH6BC/SxLhddbVFEZLLABrryXERksuAFeqZidbmIiEwWvEBXl4uISF6BDXTluYjIZMELdF0PXUQkr+AF+tgRug7RRUQmCW6gK89FRCYJYKD7sbpcREQmC1ygmxlmCnQRkVyBC3TwP/9XoIuITBbIQA+ZqQ9dRCRHIAPdTGe5iIjkCmSgh0PqchERyRXIQFeXi4jIVIEMdDNdy0VEJFcgAz0cMl1tUUQkRyADXV0uIiJTFRToZrbBzHabWbuZbc6z/ONm1mVmz2aG/1L8UieETPcUFRHJFZmpgZmFgbuB9wEdwNNmtsU590JO0//nnLtlFmqcImTqchERyVXIEfolQLtz7lXn3CjwAHDt7JZ1fCEz0ulSViAiMvcUEujLgH1Z0x2Zebk+YmbPmdlDZra8KNVNQ10uIiJTFRLolmdebpr+E9DmnDsfeAT427wrMttkZtvNbHtXV9eJVZolpB8WiYhMUUigdwDZR9ytQGd2A+dct3NuJDP5DWBdvhU55+51zq13zq1vaWk5mXqBsT70k/5zEZGyVEigPw2sMrOVZlYBXA9syW5gZkuyJq8BXixeiVOF9MMiEZEpZjzLxTmXNLNbgIeBMHCfc26Xmd0JbHfObQF+18yuAZLAEeDjs1izulxERPKYMdABnHNbga058+7Ienw7cHtxS5ueulxERKYK6C9F1eUiIpIroIGuLhcRkVwBDvRSVyEiMrcEM9BDukm0iEiuQAa6bhItIjJVIAPdzPSlqIhIjkAGesjQaYsiIjkCGei6SbSIyFSBDHR1uYiITBXIQFeXi4jIVIEMdHW5iIhMFchAD5npBhciIjkCGeimX4qKiEwRyEAPG7pJtIhIjkAGekhnuYiITBHMQA+py0VEJFcwA11dLiIiUwQ00NXlIiKSK5iBrvPQRUSmCGag656iIiJTBDTQ0Q+LRERyBDLQdYMLEZGpCgp0M9tgZrvNrN3MNh+n3UfNzJnZ+uKVmPd5SKdn8xlERIJnxkA3szBwN7ARWA3cYGar87SrBX4X+Hmxi8wVMt1TVEQkVyFH6JcA7c65V51zo8ADwLV52v0J8CVguIj15aWrLYqITFVIoC8D9mVNd2TmjTOzC4Hlzrl/Pt6KzGyTmW03s+1dXV0nXGzWevRLURGRHIUEuuWZNx6nZhYCvgL8wUwrcs7d65xb75xb39LSUniVOUIGaSW6iMgkhQR6B7A8a7oV6MyargXWAI+Z2V7gUmDLbH4xqi4XEZGpCgn0p4FVZrbSzCqA64EtYwudc8ecc83OuTbnXBvwJHCNc277rFSM/2GRDtBFRCabMdCdc0ngFuBh4EXgQefcLjO708yume0C8zF1uYiITBEppJFzbiuwNWfeHdO0vfytl3V8+mGRiMhUgfylqK6HLiIyVSAD3XQtFxGRKQIZ6GEz3eBCRCRHIANdN7gQEZkqoIGO+tBFRHIEM9BD/ser6nYREZkQzEA3H+jqdhERmRDQQPdj5bmIyIRgBnom0fXjIhGRCcEMdFOgi4jkCmig+7G6XEREJgQ00HWELiKSK9iBrkN0EZFxAQ10P1aei4hMCGSgh3WWi4jIFIEMdFOXi4jIFIEM9Ikj9BIXIiIyhwQy0Cf60JXoIiJjAhnopmu5iIhMEchAD9vY1RZLXIiIyBwSvEA/upclh36CkVaXi4hIloIC3cw2mNluM2s3s815lv9XM3vezJ41s38zs9XFLzVj1z/yjp//DlWM6r6iIiJZZgx0MwsDdwMbgdXADXkC+zvOufOcc2uBLwFfLnqlYyqqAahiRDe4EBHJUsgR+iVAu3PuVefcKPAAcG12A+dcb9ZkNTB7SRuNA1BlIzptUUQkS6SANsuAfVnTHcDbcxuZ2SeBTwMVwC/nW5GZbQI2AaxYseJEa/UqfKDHGdFZLiIiWQo5Qrc886YkqXPubufcGcBngT/KtyLn3L3OufXOufUtLS0nVumY6ESg60tREZEJhQR6B7A8a7oV6DxO+weAD76Voo4rq8tFeS4iMqGQQH8aWGVmK82sArge2JLdwMxWZU2+H9hTvBJzZLpcqtTlIiIyyYx96M65pJndAjwMhIH7nHO7zOxOYLtzbgtwi5m9F0gAR4GPzVrFUX+Wi7pcREQmK+RLUZxzW4GtOfPuyHr8qSLXNb0KneUiIpJP8H4pqi9FRUTyCmygVzGi66GLiGQJYKBX4TB1uYiI5AheoJuRjlSpy0VEJEfwAh0U6CIieQQ20GOm89BFRLIFNNDjxNEvRUVEsgUy0F00ri4XEZEcgQz0dCROlbpcREQmCWSgu2gsc4Re6kpEROaOgAZ6XHcsEhHJEdBAr/ZdLgp0EZFxAQ30KnW5iIjkCGSgE61Wl4uISI5ABrqLVFFpSdLJRKlLERGZMwIZ6GM3ubDkcIkLERGZO4IZ6BVVAISSgyUuRERk7ghkoFtFDQDpkYESVyIiMncEMtBr6+oAONR9tMSViIjMHYEM9HCF70M/0H2kxJWIiMwdgQz0sRtFdx/REbqIyJiCAt3MNpjZbjNrN7PNeZZ/2sxeMLPnzOxHZnZa8UvNkrmv6OBAL/0jyVl9KhGRoJgx0M0sDNwNbARWAzeY2eqcZv8BrHfOnQ88BHyp2IVOkulyqWKEVw71z+pTiYgERSFH6JcA7c65V51zo8ADwLXZDZxzjzrnxs4hfBJoLW6ZOaoaATjNDrJHgS4iAhQW6MuAfVnTHZl50/kt4If5FpjZJjPbbmbbu7q6Cq8yV3Uz6dPexa9GHqf9YO/Jr0dEpIwUEuiWZ17ei6iY2U3AeuDP8y13zt3rnFvvnFvf0tJSeJV5hNZ9nBV2CPY+/pbWIyJSLgoJ9A5gedZ0K9CZ28jM3gt8DrjGOTdSnPKO45wPMBiuY+2B73KwV5cAEBEpJNCfBlaZ2UozqwCuB7ZkNzCzC4H/gw/zQ8UvM49ojNELf5MNoad45Mf/ekqeUkRkLpsx0J1zSeAW4GHgReBB59wuM7vTzK7JNPtzoAb4ezN71sy2TLO6omp4z6cZsBpO+8VXSKTSp+IpRUTmrEghjZxzW4GtOfPuyHr83iLXVZiqBvaf9wne9dxf8OS/3s+lG369JGWIiMwFwfylaJbTf+UPeS20gjN//ke4If1yVETmr8AHeqgixivv+BIN6R6OfOtjkNJNL0Rkfgp8oAO8+/Kr+GrlJ1iw/yekvvc7CnURmZfKItArIiEu+vDv8+eJ6wjvfBC+82swqCsxisj8UhaBDvDLb1tE+9s+wX9L3kz6tcfhnkthj05nFJH5o2wCHeCLHz6fn9RczX+O/hnJWBP83Ufh+5+EvgOlLk1EZNaVVaA3Vldwz69fxJODS/lo+n8w8vZb4RcPwF0Xwo//FIZ13RcRKV9lFegAFyxv4J5fv4jnDwzzq69s4Mhv/hucdRU8/iX4yhr40Z/AwOFSlykiUnRlF+jg+9Pv/Y11vHywjw89cIC9V9wNNz8Kp78bnvgLH+xb/xB69s28MhGRgCjLQAd4zzmLuP/mS+kbTvLhr/2UR/tb4de+DZ/8Oaz5MGz/a7hrLXzvt6Frd6nLFRF5y8y5vFfCnXXr169327dvn/Xnee3wAL/97R28dKCPj7+jjc0b30YsGvZH5z/9S3jmW5AcgtPeBRdcD6uvhVjdrNclInIyzGyHc2593mXlHugAw4kUf/YvL/E3/76XMxfW8CfXruGyMxb4hQOHYfvfwC/uhyOvQKQKzvkVH+xn/PL47e5EROaCeR/oY37ychef+97zdBwd4tq1S/nc1eewsC7mFzoHHU/7YN/5DzDcA5EYnH45nH01nHEFNKw4pfWKiORSoGcZTqS459F2vv6TV6mIhPjUe1bxG5ed5rthxqQS8PpPYfdWeGkrHHvDz284DVa+2w9tvwR1S055/SIyvynQ83jt8ACf37KLn7zcxeK6GLe+50x+dd1yKiI53xM7B4degNeegNceh9f/DYaP+WWNbbBsHSy9yI+XnK8uGhGZVQr04/hp+2H+17bdPPNGD801lVx/8XJuePsKljVU5f+DdAoOPA97n4B9T0Hnf8CxzOmPFoKFq2HphbD4fFh0LixaDVWNp+4FiUhZU6DPwDnH43sO862f7uXHu/0d9C5pa+L95y9hw5rFLKyNHX8F/YfgzWfgzR3QmRlnX5u9bpkP94WrYdEaH/ILzoRI5Sy+KhEpRwr0E7DvyCB/v6ODrc/vp/1QP2ZwcVsTl5/dwi+d2cK5S+sIhez4K3EO+vbDwRfg4E44uMt323TthnTm0r4W8l+yLjgzazjDj+taIVS2PxEQkbdAgX6S9hzs4wfP7+dfdh7gpQN9ADTGo7zjzGYuaWti3WmNvG1xLZFwgeGbHIXudh/w3Xv84+526H4FRvsn2kVi0HS6H+qXQ8NyqG/NPF4B8QVgM+xURKQsKdCL4FDfMP/efpgn9hzmp+3dHOgdBiBeEeaC1gbWndbI2uUNnNdaz8LaSuxEAtc56D84EfCH9/iQP/qa/wFUYmBy+0iVP8OmZlHWsHDicW1mHG+GcEG3jRWRgFCgF5lzjjd7htjx+lGeef0oO944yov7+0il/bZsrqnk3KV1rFlWx5ql9axZVk9rY9WJhfzEk/n++GMd/svXYx3Q84a/JHD/wYlh7MybXJX1UNWQGRohlhlnT8fqoKImM1T7obLWj6NxfRoQmUPecqCb2QbgfwNh4K+cc1/MWf5u4KvA+cD1zrmHZlpnkAM9n8HRJC909rLzzWPs7OxlV2cvew72kcyEfHVFmDMX1XLWwhpWLaph1aJazlpUy9L62MkFfa7EkP9ytv8Q9I+FfZffGQz3+PHQ2DgzL50sYMXmg75yLOxrfMhHKn3XUKQya4hNHYeiEApDOAqhSP7pcCRrWSRnOuy/b8geJs0L+x3OpPnhnLZltkNKJSZed88bvjsuMeT/zZtO9/++FvI77b6DvosOYOiI/yQ33Asu7ZcPHIZYvd/ewz1+J59Og0v5f6MgSacz7wWDkX7/Pk2N+tdd1ejf/8khCFf47dfb6V9j3VJ442e+TXyB/z800OXfw9G4P7MtnfTDQBf0vA61S/w26+2EI6/CwnP8v0HP6xCuhEgFJIYhMei371CP376jA364fDOc99GTepnHC/QZP4+bWRi4G3gf0AE8bWZbnHMvZDV7A/g4cNtJVVgG4hUR1rc1sb6taXzecCLFywf72PlmLy8f7GPPoT4ee7mLv9/RMd4mO+jPXFhDW3M1K5urWdEUn/xjp5lEq6DxND8Uwjnfbz901L/5R8eGgeNPj/RDctjPH+yG5Iifzh1Tmk9+08ob9KGJncG0wwzLMTiR/YXDh2U6lRknfRClkxPz00kfuOOPM+No3J8xdXSvf1xRDX2dUN3i/z0Sg1C/Ano7fF21S/zjWL1/7uFj/gv3/gN+/fXLfQDF6iGaWVfT6f72jclhf2bW4T0+6KpbfHAtONOH5Eif/xK/dz9EY355byfULva1Dh/ztY70+WCML/DPFW/2222gy++Ihnr8iQLxZl9rZZ3/t+nthOqFvl1i0Hch9nb6oAxX+E+q8Wb/PIPdEG/yOzQL+QOJ4R4fuOkURX8vWtj/m4B/jrql8ML3/eOGFf71J4d9HdE4jPT6bVzV6F9HRdzXOwtmPEI3s8uAzzvnrspM3w7gnPufedp+E/jn+XiEfiJ6BkfZc6jfh/zBzPhQP119I+NtzGBJXYy25mo/LIjTtsCH/fITDftTzTn/pk4MTRzZpBITjwueTmTWlfIB5DJHjmOP0ym/PHv+pLbpnLZZ60inAZe/7fhQ4PITNbZDCUV8OIQi/qym8cdjy3LajfT5brcFZ/ij7KGjsPzt/jTZyhpoPtv/+G3xGv96u9uhdb0PZYDmVb5t0xl+vYdehGUXQfer/nuahef65dXNfmex/zloOcsfxQ/1QNNKv85IzD/fkdd8mCWGfKjWLpkI1aoGOPam785LDPl1NLb5gHYOalr88qpG/4ls4LAP+OFjvvb6ZX5eVaPv/uvb73dGqVFIjfid0cBhv6y6xR+F1y72/x6jg35do/0+/Kubff1VDX7HlU7491ftEr+z6HkDVlzqD1ZGev2nmOoW/1yJocmfKivr/LoHDvv3T6zB72SGe/1zRWc4xbkI3tIROrAMyL5weAfw9pMsZBOwCWDFivl7XZSGeAUXtzVxcdvkvfSxoQSvdw/w2uEB9h4e9I+7B/jh8/s5OpgYb2cGi+tiLG+M09pUxfLGOMub4ixvrGJ5U5xFdTHCM51aOZvM/Js/aB/Zy8Flv1PqCuaHmpbJ03PkCq2FBHq+ZDipzzDOuXuBe8EfoZ/MOspZfVWU81sbOL+1YcqyY4MJ9nYPsDcT+G8cGaTjyBA/e6Wb7/W+SfYHrWjYWNowFvRVtOYE/oLqiuL024vInFJIoHcAy7OmW4HO2SlHplMfj3JBvIELlk8N+5Fkis6eYfYdGaTj6BD7jg6y78gg+44OsW3XQboHRie1r4iEWFIfywxVLK6PsbQ+xuL6qvH5TQp9kcApJNCfBlaZ2UrgTeB64MZZrUpOSGUkzMrMl6n5DIwkfdAfGWTf0UEOHBum89gwB44N8dRrRzjYOzx+Ns6YikiIxXU+3BfVxWiprfRDTeXE49pKmuIVM/9yVkROiRkD3TmXNLNbgIfxpy3e55zbZWZ3Atudc1vM7GLge0Aj8AEz+4Jz7txZrVwKVl0Z4ezFtZy9uDbv8nTacXhghP09w+zPBP3+Y8OZYYjnOno41DfC4Ghqyt+GQ8aC6goW1k0O++aaSpqqK2iMV/hxdQVN8QqqKubwl7kiAacfFknBBkaSdPWN0NU/4sfZQ9a8w/0jU474x8SiIZrimYDPDvx4BU3V0fHgb6yuoL4qSkM8SlU0rO4fkYy3epaLCOCP9KsrI7RN07UzJp129AwlODo4ytGBUY4MjHJ0cJQjA4nMODN/cJR9RwY5MjBK7/D0P3KKho36qih1VVEaqqLUZw/xisnTmZ3A2OM5fXqnSJEp0KXoQiGjKXMETsvM7QESqXRmB5AY3wEcG0qMDz2DCXozjw/3j9Le1c+xwQR9I0mO9yGzIhIa3wnUxiLUxPy4tjJCTWWEmpgf18Wi449rYhHqYhFqKv28eDSs7wkkEBToMidEwyEW1sZmvvZ8jlTa0T+c9KE/NP1O4NhQgr5MuzePDtI/kqR/OMlAnu8FcplBTUUks0PwoV9dGaEqGqa6MkK8IpwZIlRXhqmqiFCdOy/qx/EK375KOwmZBQp0CbRwyKiPR6mPR1lB/IT/PpV2PtwzAd8/kqB3eOyxH/cN+08CY/P6hpPj3ycMjqYYHE0yMJJiKDHzziGb3yFMhPzYDqCqIkwsGqYqGqIqGiaW2QFURcPjy2LR7HmhielM21g0TGUkpO8e5hkFusxr4ZCN97e/Vem0YyiRygl5Px6fN5piaHRsXjIzf+LxwEiSIwOjDCf8DmIokWJoNMVI8sQvMWAGsUh2yIf8DiESztppTN5RTGoXndg5xKIhKiN+HIv6dYzNq4yGtPOYIxToIkUSCtn4F8dQ3NsLptOO4aQP9+Fk2o+zAn8okZkendgRDCfSU+dlHvdnPmEMZ9qNLR89iR0H+J1HZSQ0/slgUuhnz4uGiUVCVEZDmeV+WWU0REU4REXET1dkhsqscWUk7OeHs9v7+dGwaYeCAl0kEEIhy3TNzO5/2VTaTdpRjAX+cNI/Hhl/7HcWI8nMOOF3NCO57TPL+4b9DmQ0Mz08Nk6kmOYM1xM2EfxjoR/OCv3cnUR40o5hfHk4RDRrXBkOEY0Y0XDWvPHnCI+vc+xvs8eluJ6SAl1ExoUnfco4NRKpNKPJzJBKM5JIM5ryO4OR5MSy8cepVKbNxPyR8TapPO0n5g+MJLPajrXxz5VIpYu2cwG/LcdDPhP0kbARDhm/996zuOaCpcV7sgwFuoiUVDQcIhoOUV3cXqqTkkylSaTc+I5gNJUmkZy88xjNmh7bwUzaiaTSJJJu0nzf3pFMp0mmHI3x2bkSqQJdRCQjEg4RCRPYS1QUeLt6ERGZ6xToIiJlQoEuIlImFOgiImVCgS4iUiYU6CIiZUKBLiJSJhToIiJlomS3oDOzLuD1k/zzZuBwEcsJOubjhUwAAANtSURBVG2PCdoWE7QtJiuX7XGacy7vrWNKFuhvhZltn+6eevORtscEbYsJ2haTzYftoS4XEZEyoUAXESkTQQ30e0tdwByj7TFB22KCtsVkZb89AtmHLiIiUwX1CF1ERHIo0EVEykTgAt3MNpjZbjNrN7PNpa7nVDOzvWb2vJk9a2bbM/OazOxfzWxPZtxY6jpni5ndZ2aHzGxn1ry8r9+8uzLvlefM7KLSVV5802yLz5vZm5n3x7NmdnXWstsz22K3mV1Vmqpnh5ktN7NHzexFM9tlZp/KzJ9X741ABbqZhYG7gY3AauAGM1td2qpK4grn3Nqsc2o3Az9yzq0CfpSZLlffBDbkzJvu9W8EVmWGTcDXTlGNp8o3mbotAL6SeX+sdc5tBcj8P7keODfzN/dk/j+ViyTwB865c4BLgU9mXvO8em8EKtCBS4B259yrzrlR4AHg2hLXNBdcC/xt5vHfAh8sYS2zyjn3OHAkZ/Z0r/9a4FvOexJoMLMlp6bS2TfNtpjOtcADzrkR59xrQDv+/1NZcM7td849k3ncB7wILGOevTeCFujLgH1Z0x2ZefOJA7aZ2Q4z25SZt8g5tx/8GxtYWLLqSmO61z9f3y+3ZLoR7svqfps328LM2oALgZ8zz94bQQt0yzNvvp13+U7n3EX4j4yfNLN3l7qgOWw+vl++BpwBrAX2A3+RmT8vtoWZ1QDfBX7POdd7vKZ55gV+ewQt0DuA5VnTrUBniWopCedcZ2Z8CPge/mPzwbGPi5nxodJVWBLTvf55935xzh10zqWcc2ngG0x0q5T9tjCzKD7M/8459w+Z2fPqvRG0QH8aWGVmK82sAv8lz5YS13TKmFm1mdWOPQauBHbit8HHMs0+Bny/NBWWzHSvfwvwnzJnNFwKHBv7+F2ucvqBP4R/f4DfFtebWaWZrcR/GfjUqa5vtpiZAX8NvOic+3LWovn13nDOBWoArgZeBl4BPlfqek7xaz8d+EVm2DX2+oEF+G/w92TGTaWudRa3wf34roQE/ijrt6Z7/fiP1Xdn3ivPA+tLXf8p2Bb/N/Nan8OH1pKs9p/LbIvdwMZS11/kbfEufJfJc8CzmeHq+fbe0E//RUTKRNC6XEREZBoKdBGRMqFAFxEpEwp0EZEyoUAXESkTCnQRkTKhQBcRKRP/H3c1PHa9uwbaAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.16598967 0.01227312 0.07301923 0.05841057 0.07800387 0.01242027\n",
      " 0.09846961 0.015186   0.01312832 0.02467842 0.01753325 0.10864114\n",
      " 0.12223908 0.08895537 0.04201851 0.03360331 0.02592429 0.00950546]\n",
      "0.9999994\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "model_types = ['basic','att1','att2','att3']\n",
    "model_type = model_types[3]\n",
    "merge_types = ['avg','concat']\n",
    "merge_type = merge_types[0]\n",
    "train(train_x,train_y,test_x,test_y,feature_cnt,feature_max,model_type,epochs,merge_type,dim)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 284,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tensor(\"reshape/Reshape:0\", shape=(?, 6, 18), dtype=float32)\n",
      "Tensor(\"attention/Sum:0\", shape=(?, 18), dtype=float32)\n",
      "Tensor(\"repeat_vector/Tile:0\", shape=(?, 6, 18), dtype=float32)\n",
      "Model: \"model\"\n",
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_1 (InputLayer)            [(None, 6, 18)]      0                                            \n",
      "__________________________________________________________________________________________________\n",
      "batch_normalization (BatchNorma (None, 6, 18)        72          input_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "flatten (Flatten)               (None, 108)          0           batch_normalization[0][0]        \n",
      "__________________________________________________________________________________________________\n",
      "dense (Dense)                   (None, 108)          11772       flatten[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "reshape (Reshape)               (None, 6, 18)        0           dense[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "attention (Lambda)              (None, 18)           0           reshape[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "repeat_vector (RepeatVector)    (None, 6, 18)        0           attention[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "multiply (Multiply)             (None, 6, 18)        0           batch_normalization[0][0]        \n",
      "                                                                 repeat_vector[0][0]              \n",
      "__________________________________________________________________________________________________\n",
      "flatten_1 (Flatten)             (None, 108)          0           multiply[0][0]                   \n",
      "__________________________________________________________________________________________________\n",
      "repeat_vector_1 (RepeatVector)  (None, 1, 108)       0           flatten_1[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "lstm (LSTM)                     (None, 1, 128)       121344      repeat_vector_1[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "lstm_1 (LSTM)                   (None, 64)           49408       lstm[0][0]                       \n",
      "__________________________________________________________________________________________________\n",
      "dense_1 (Dense)                 (None, 32)           2080        lstm_1[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "dense_2 (Dense)                 (None, 1)            33          dense_1[0][0]                    \n",
      "==================================================================================================\n",
      "Total params: 184,709\n",
      "Trainable params: 184,673\n",
      "Non-trainable params: 36\n",
      "__________________________________________________________________________________________________\n",
      "Train on 20424 samples, validate on 5106 samples\n",
      "Epoch 1/1000\n",
      "20424/20424 [==============================] - 6s 271us/sample - loss: 0.2735 - val_loss: 0.2059\n",
      "Epoch 2/1000\n",
      "20424/20424 [==============================] - 5s 233us/sample - loss: 0.1490 - val_loss: 0.1411\n",
      "Epoch 3/1000\n",
      "20424/20424 [==============================] - 5s 234us/sample - loss: 0.1329 - val_loss: 0.1268\n",
      "Epoch 4/1000\n",
      "20424/20424 [==============================] - 5s 233us/sample - loss: 0.1222 - val_loss: 0.1164\n",
      "Epoch 5/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.1145 - val_loss: 0.1106\n",
      "Epoch 6/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.1081 - val_loss: 0.1068\n",
      "Epoch 7/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.1032 - val_loss: 0.1037\n",
      "Epoch 8/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0989 - val_loss: 0.1009\n",
      "Epoch 9/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0952 - val_loss: 0.0977\n",
      "Epoch 10/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0940 - val_loss: 0.0965\n",
      "Epoch 11/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0910 - val_loss: 0.0945\n",
      "Epoch 12/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0883 - val_loss: 0.0934\n",
      "Epoch 13/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0862 - val_loss: 0.0937\n",
      "Epoch 14/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0837 - val_loss: 0.0950\n",
      "Epoch 15/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0811 - val_loss: 0.0949\n",
      "Epoch 16/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0792 - val_loss: 0.1020\n",
      "Epoch 17/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0779 - val_loss: 0.0915\n",
      "Epoch 18/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0758 - val_loss: 0.0918\n",
      "Epoch 19/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0741 - val_loss: 0.0913\n",
      "Epoch 20/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0730 - val_loss: 0.0913\n",
      "Epoch 21/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0719 - val_loss: 0.0903\n",
      "Epoch 22/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0703 - val_loss: 0.0871\n",
      "Epoch 23/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0695 - val_loss: 0.0968\n",
      "Epoch 24/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0700 - val_loss: 0.0893\n",
      "Epoch 25/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0668 - val_loss: 0.0898\n",
      "Epoch 26/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0693 - val_loss: 0.0961\n",
      "Epoch 27/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0653 - val_loss: 0.0894\n",
      "Epoch 28/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0654 - val_loss: 0.0958\n",
      "Epoch 29/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0658 - val_loss: 0.0982\n",
      "Epoch 30/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0645 - val_loss: 0.0948\n",
      "Epoch 31/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0629 - val_loss: 0.0957\n",
      "Epoch 32/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0614 - val_loss: 0.0971\n",
      "Epoch 33/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0618 - val_loss: 0.1009\n",
      "Epoch 34/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0615 - val_loss: 0.0994\n",
      "Epoch 35/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0597 - val_loss: 0.0990\n",
      "Epoch 36/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0590 - val_loss: 0.0983\n",
      "Epoch 37/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0594 - val_loss: 0.0940\n",
      "Epoch 38/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0574 - val_loss: 0.0924\n",
      "Epoch 39/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0570 - val_loss: 0.0952\n",
      "Epoch 40/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0600 - val_loss: 0.0958\n",
      "Epoch 41/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0567 - val_loss: 0.0948\n",
      "Epoch 42/1000\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0570 - val_loss: 0.0944\n",
      "Epoch 43/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0543 - val_loss: 0.0924\n",
      "Epoch 44/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0543 - val_loss: 0.0927\n",
      "Epoch 45/1000\n",
      "20424/20424 [==============================] - 5s 239us/sample - loss: 0.0539 - val_loss: 0.0914\n",
      "Epoch 46/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0567 - val_loss: 0.0914\n",
      "Epoch 47/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0616 - val_loss: 0.0936\n",
      "Epoch 48/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0539 - val_loss: 0.0895\n",
      "Epoch 49/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0517 - val_loss: 0.0914\n",
      "Epoch 50/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0508 - val_loss: 0.0931\n",
      "Epoch 51/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0506 - val_loss: 0.0965\n",
      "Epoch 52/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0505 - val_loss: 0.0975\n",
      "Epoch 53/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0498 - val_loss: 0.0982\n",
      "Epoch 54/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0489 - val_loss: 0.1012\n",
      "Epoch 55/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0485 - val_loss: 0.1000\n",
      "Epoch 56/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0488 - val_loss: 0.0966\n",
      "Epoch 57/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0482 - val_loss: 0.1020\n",
      "Epoch 58/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0528 - val_loss: 0.1043\n",
      "Epoch 59/1000\n",
      "20424/20424 [==============================] - 5s 235us/sample - loss: 0.0474 - val_loss: 0.0995\n",
      "Epoch 60/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0536 - val_loss: 0.0879\n",
      "Epoch 61/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0514 - val_loss: 0.0928\n",
      "Epoch 62/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0466 - val_loss: 0.0968\n",
      "Epoch 63/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0452 - val_loss: 0.0998\n",
      "Epoch 64/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0450 - val_loss: 0.1023\n",
      "Epoch 65/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0441 - val_loss: 0.0945\n",
      "Epoch 66/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0440 - val_loss: 0.0984\n",
      "Epoch 67/1000\n",
      "20424/20424 [==============================] - 5s 236us/sample - loss: 0.0435 - val_loss: 0.0968\n",
      "Epoch 68/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0434 - val_loss: 0.1036\n",
      "Epoch 69/1000\n",
      "20424/20424 [==============================] - 5s 238us/sample - loss: 0.0424 - val_loss: 0.0973\n",
      "Epoch 70/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0424 - val_loss: 0.1004\n",
      "Epoch 71/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0487 - val_loss: 0.0970\n",
      "Epoch 72/1000\n",
      "20424/20424 [==============================] - 5s 237us/sample - loss: 0.0432 - val_loss: 0.0975\n",
      "Epoch 00072: early stopping\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deXxU1fnH8c/JZCaZSUJ2toSwg+xbQKmoKCKLFlwRrUtdinu11VbtotXa1p9trdpqFRXrgrigVqooiIIiiywR2SHshAAJ2ZNJJpmZ8/vjTCCEBAJZZrh53q9XXmRm7kyeCZPvnPucM/cqrTVCCCGsKyzYBQghhGheEvRCCGFxEvRCCGFxEvRCCGFxEvRCCGFx4cEuoLakpCTdpUuXYJchhBCnldWrVx/SWifXdVvIBX2XLl1YtWpVsMsQQojTilJqd323SetGCCEsToJeCCEsToJeCCEsLuR69EIIcSqqqqrIysqioqIi2KU0q8jISFJTU7Hb7Q2+jwS9EMISsrKyiImJoUuXLiilgl1Os9Bak5eXR1ZWFl27dm3w/aR1I4SwhIqKChITEy0b8gBKKRITE096r0WCXghhGVYO+Wqn8hwtE/SlHi9Pf7GVNXsLg12KEEKEFMsEfaXXz3NfZrJmT0GwSxFCtEKFhYW88MILJ32/iRMnUljYvANUywS9y2EDwF3lC3IlQojWqL6g9/mOn0lz584lLi6uucoCLLTqJiLcvGdVVErQCyFa3kMPPcT27dsZPHgwdrud6OhoOnTowJo1a9i4cSOXXnope/fupaKignvvvZdp06YBRw77UlpayoQJExg1ahRLly4lJSWFjz/+GKfT2ejaLBP0SimcdhvlMqIXotV77H8b2Jhd3KSP2bdjGx79cb96b3/yySdZv349a9asYdGiRVx88cWsX7/+8DLIGTNmkJCQQHl5OcOHD+eKK64gMTHxqMfIzMxk1qxZvPzyy0yZMoUPPviA6667rtG1WybowbRv3DKiF0KEgBEjRhy11v25557jo48+AmDv3r1kZmYeE/Rdu3Zl8ODBAAwbNoxdu3Y1SS2WCvpIGdELIeC4I++WEhUVdfj7RYsWsWDBApYtW4bL5WL06NF1roWPiIg4/L3NZqO8vLxJarHMZCyA02GjQoJeCBEEMTExlJSU1HlbUVER8fHxuFwuNm/ezPLly1u0NkuN6F0OG+XSuhFCBEFiYiJnn302/fv3x+l00q5du8O3jR8/nhdffJGBAwfSu3dvzjrrrBatzVJBH2mXHr0QInjefvvtOq+PiIjgs88+q/O26j58UlIS69evP3z9Aw880GR1Wat1Y5fWjRBC1GapoHc5ZDJWCCFqs1TQO6V1I4QQx7BU0EfKqhshhDiGpYLeZZdVN0IIUZulgt7psOGu8qG1DnYpQggRMiwV9JF2G1qDx+sPdilCiFbmVA9TDPDMM8/gdrubuKIjLBX0Trs5VLH06YUQLS2Ug75BH5hSSo0HngVswCta6ydr3f5L4FbAC+QCN2utdwdu8wHrApvu0VpPaqLaj3H4mPSVPuJczfVThBDiWDUPUzx27Fjatm3Le++9h8fj4bLLLuOxxx6jrKyMKVOmkJWVhc/n4/e//z0HDx4kOzub888/n6SkJBYuXNjktZ0w6JVSNuB5YCyQBaxUSs3RWm+ssdn3QLrW2q2UugN4Crg6cFu51npwE9ddJ2cg6GUtvRCt3GcPwYF1J97uZLQfABOerPfmmocpnj9/PrNnz2bFihVorZk0aRLffPMNubm5dOzYkU8//RQwx8CJjY3l6aefZuHChSQlJTVtzQENad2MALZprXdorSuBd4DJNTfQWi/UWlfvdywHUpu2zIaJDLRuZOWNECKY5s+fz/z58xkyZAhDhw5l8+bNZGZmMmDAABYsWMCDDz7I4sWLiY2NbZF6GtK6SQH21ricBZx5nO1vAWoe1CFSKbUK09Z5Umv939p3UEpNA6YBpKWlNaCkulW3bqRHL0Qrd5yRd0vQWvPwww9z2223HXPb6tWrmTt3Lg8//DAXXXQRjzzySLPX05ARvarjujrXLyqlrgPSgb/WuDpNa50OXAs8o5TqfsyDaT1da52utU5PTk5uQEl1q56MlU/HCiFaWs3DFI8bN44ZM2ZQWloKwL59+8jJySE7OxuXy8V1113HAw88QEZGxjH3bQ4NGdFnAZ1qXE4FsmtvpJS6EPgtcJ7W2lN9vdY6O/DvDqXUImAIsL0RNdfrcOtGRvRCiBZW8zDFEyZM4Nprr2XkyJEAREdH89Zbb7Ft2zZ+9atfERYWht1u59///jcA06ZNY8KECXTo0CE4k7HASqCnUqorsA+YihmdH6aUGgK8BIzXWufUuD4ecGutPUqpJOBszERts5DWjRAimGofpvjee+896nL37t0ZN27cMfe75557uOeee5qtrhMGvdbaq5S6G5iHWV45Q2u9QSn1OLBKaz0H06qJBt5XSsGRZZR9gJeUUn5Mm+jJWqt1mpTTIa0bIYSorUHr6LXWc4G5ta57pMb3F9Zzv6XAgMYUeDKcsupGCCGOYa1Pxso6eiFatdZwnKtTeY6WCnqHLYwwJSN6IVqjyMhI8vLyLB32Wmvy8vKIjIw8qftZ6pyxSimcdjnLlBCtUWpqKllZWeTm5ga7lGYVGRlJaurJfSbVUkEP4HSES9AL0QrZ7Xa6du0a7DJCkqVaNwBORxgV0roRQojDrBf0ct5YIYQ4iiWDXlo3QghxhPWC3iFBL4QQNVkv6OUE4UIIcRTrBb2M6IUQ4ijWC3p7uIzohRCiBusFvSNMRvRCCFGD9YJeevRCCHEU6wV94JOxVj7ehRBCnAzrBb29+uQj/iBXIoQQocGCQW+ekvTphRDCsFzQuxzmOG0S9EIIYVgu6CMdcpYpIYSoyXJBL6cTFEKIo1ku6F1yOkEhhDiK5YI+0i5BL4QQNVku6I+0brxBrkQIIUKD5YJeWjdCCHE0ywW98/CqG/nAlBBCgAWDvrpH75bWjRBCABYM+iOHQJDWjRBCgAWD3hEeRniYkh69EEIEWC7owYzq3fKBKSGEACwa9JEOm7RuhBAiwJJB73LIyUeEEKKaJYPeaZcThAshRDXrBL07H967ATIXECk9eiGEOMw6QW+zw8aPIWcjLunRCyHEYdYJekc0hNnBnSetGyGEqKFBQa+UGq+U2qKU2qaUeqiO23+plNqolFqrlPpSKdW5xm03KqUyA183NmXxtYoAVyK484h0SOtGCCGqnTDolVI24HlgAtAXuEYp1bfWZt8D6VrrgcBs4KnAfROAR4EzgRHAo0qp+KYrvxZXIpQX4LLbqJCgF0IIoGEj+hHANq31Dq11JfAOMLnmBlrrhVprd+DiciA18P044Autdb7WugD4AhjfNKXXwZVgWjcOad0IIUS1hgR9CrC3xuWswHX1uQX47GTuq5SappRapZRalZub24CS6lEd9LLqRgghDmtI0Ks6rtN1bqjUdUA68NeTua/WerrWOl1rnZ6cnNyAkuoR6NE7HTY8Xj9+f51lCiFEq9KQoM8COtW4nApk195IKXUh8FtgktbaczL3bTKBHr0z3Ly/VHhlVC+EEA0J+pVAT6VUV6WUA5gKzKm5gVJqCPASJuRzatw0D7hIKRUfmIS9KHBd83AlgvYTq8x0gRwGQQghIPxEG2itvUqpuzEBbQNmaK03KKUeB1ZpredgWjXRwPtKKYA9WutJWut8pdQfMW8WAI9rrfOb5ZmACXqgjS4GwF3pI7HZfpgQQpweThj0AFrrucDcWtc9UuP7C49z3xnAjFMt8KQ4EwCIDQS9fDpWCCGs9MlYMKtugGhfESAnCBdCCLBc0JtGTZTvSOtGCCFaO0sGvdNbCMiIXgghwGpB74gCWwSRVSbo5TAIQghhtaBXClwJRFQWANK6EUIIsFrQA7gSsXtM0EvrRgghLBn0Cdg8gdaNBL0QQlgx6BOxlZvPZEnrRgghrBj0zgSUOw+HLUxaN0IIgRWD/vDJR+RYN0IIAVYNejTJ9grp0QshBJYNeuhgL5MevRBCYMmgN8e7SbaVSY9eCCGwcNAnhZVI60YIIbBk0JvWTVJYqbRuhBACCwd9PKWy6kYIIbBi0NtdEB5JHNK6EUIIsGLQKwWuRGJ1sbRuhBACKwY9gDOBNrpYVt0IIQRWDXpXAlG+Igl6IYTAskGfSJSviEqvH59fB7saIYQIKssGvbNKThAuhBBg4aCP8BZjwydLLIUQrZ5Fgz4BhSaWMlliKYRo9Swa9IEPTakSWWIphGj1LBr05ng38ZRIj14I0epZNOjNiD5BlUiPXgjR6lkz6J2BEb0qpbzKG+RihBAiuKwZ9NUjekoor/QHuRghhAguawa9w4U/PJI4JT16IYSwZtAD2pkYGNFL60YI0bpZNuhxJRIvI3ohhLBu0Ie5EgKrbqRHL4Ro3Swb9CoqkQRViltW3QghWrkGBb1SarxSaotSaptS6qE6bj9XKZWhlPIqpa6sdZtPKbUm8DWnqQo/oUDrpkLW0QshWrnwE22glLIBzwNjgSxgpVJqjtZ6Y43N9gA/BR6o4yHKtdaDm6DWk+NKJJYyPJWeFv/RQggRSk4Y9MAIYJvWegeAUuodYDJwOOi11rsCt4VOQzywll5VFAW5ECGECK6GtG5SgL01LmcFrmuoSKXUKqXUcqXUpXVtoJSaFthmVW5u7kk89HE44wHQ7rymeTwhhDhNNSToVR3Xncxpm9K01unAtcAzSqnuxzyY1tO11ula6/Tk5OSTeOjjCIzo9+3bK4cqFkK0ag0J+iygU43LqUB2Q3+A1jo78O8OYBEw5CTqO3WBoHd5i1m6/VCL/EghhAhFDQn6lUBPpVRXpZQDmAo0aPWMUipeKRUR+D4JOJsavf1mFQj69vYyvth4sEV+pBBChKITBr3W2gvcDcwDNgHvaa03KKUeV0pNAlBKDVdKZQFXAS8ppTYE7t4HWKWU+gFYCDxZa7VO8wkck35osp8vNubgl5OECyFaqYasukFrPReYW+u6R2p8vxLT0ql9v6XAgEbWeGrsTrC76BdbxaEsD9/vLWRY5/iglCKEEMFk2U/GAuBKJM3pITxMSftGCNFqWTvoo9viKN7NyO6JzN94INjVCCFEUFg76HuMhT3LmdRNsSO3jG05pcGuSAghWpy1g37AlYDmIr0UQNo3QohWydpBn9QTOgwmdtt/GZASyxfSvhFCtELWDnqAAVdB9vdc1dWsvMkpqQh2RUII0aKsH/T9LwcUE1iC1vDlppxgVySEEC3K+kHfpiN0GUXSzjmkxTuZv0HaN0KI1sX6QQ8w4EpUXiY3dCliybY8ckvkGPVCiNajdQR9n0kQZueqiGV4/X5eW7Iz2BUJIUSLaR1B70qAnmOJ3f4/JvZvx5vLdlNcURXsqoQQokW0jqAHs6a+JJtf9s6jxONl5vI9wa5ICCFaROsJ+l4TwB5Ft/1zOadnEq9+u1NOSCKEaBVaT9A7XHDGxbDhv9x1dgcOlXr4ICMr2FUJIUSzaz1BDzD8Fqgo5MyC/zGoUxwvfb0Dry90zmcuhBDNoXUFfdpZ0OUc1NJ/ctc5ndiT72buellXL4SwttYV9ADnPgAl+7nQs4DuyVH8e9F2tJazTwkhrKv1BX3X8yAlnbAl/+COc9LYtL+YuetkVC+EsK7WF/RKwbm/gsI9XBa+jP4pbXh0zgYK3ZXBrkwIIZpF6wt6gF7joN0AbEue5qnL+lPoruTxT1rmnOVCCNHSWmfQKwXn3g952+hbuJA7R3fnw4x9LNwsR7YUQlhP6wx6MMe/SeoF3/yNu87vRq920fzmo3WUyKERhBAW03qDPswG59wPORuIyJjBU1cO4mBxBX/5bHOwKxNCiCbVeoMezNmnek+Ezx9isHs5t57Tjbe/28OSbYeCXZkQQjSZ1h30YTa44hVoPxBm38T9/cvplhzFfe+uIadYTjkohLCG1h30AI4ouPZdcCUS8d41vDy5A6UVXu6cmUGVHB5BCGEBEvQAMe3h2vegyk33+Tfx98ndWLW7gD/P3RTsyoQQotEk6Ku16wtTXodDW5i48mbuHxbOa0t28fGafcGuTAghGkWCvqbuF8A170DRXu7edgt3td/IQx+sY/OB4mBXJoQQp0yCvraeY+H2xajEnvyq8Al+Z3+L2/6znKwCd7ArE0KIUyJBX5e4NLj5cxgxjZ/4/8c/Kx7mdy/OYm++hL0Q4vQjQV+f8AiY+Fe48jX6RhbwiucBljw/jawDcpgEIcTpRYL+RPpfTvjPV1F0xjVM8X2C48WzOPTdeyDHsBei+eRugU/vh6/+BP7TYJmzOx+8nmBXUa8GBb1SarxSaotSaptS6qE6bj9XKZWhlPIqpa6sdduNSqnMwNeNTVV4i3IlkDj1BXZO+oh8Ykj67Ge4X54A2WuCXZkQ1qE17FgEM6+C50fA6v/AN0/BnLvB523en9sYxdnwr+Hw2oSQDfsTBr1SygY8D0wA+gLXKKX61tpsD/BT4O1a900AHgXOBEYAjyql4htfdnB0H3o+3lu+4i9hP6Ni33r09NHw3zuheH+wSzO+/Qesei3YVQgBlW6oKm/49mWH4JUx8MZkyP4eRv8G7t9i/l0zEz64BbxNfM6IsjxY8Bg8mQaLnz61x/D74MNp4CmBfavhs183bY1NJLwB24wAtmmtdwAopd4BJgOHD+Cutd4VuK32PtY44AutdX7g9i+A8cCsRlceJP07JRL/8z9y62tjGJc/k1t/eA/bho/MyUx+dA/Y7MEpbOPHsOAPEB4JZ1wM0W2DU0coK9wLcx8Avxd6T4Be4yE2NdhVWYuvCr57CRb9xYxuU4ZB5x9Bl7Oh01kQEX3sfTwlMPNKyNkEP34WBk4Fe6S5bfSD4HDB/N+ZN44pr4Pd2bgayw7B0udgxStQ5TaLLxb+2Rz3qu0ZJ/dYi5+GXYth8guQtw2+fdo856E3HL1daS5s/gQGXAkRMY2r/xQ0JOhTgL01LmdhRugNUdd9Uxp435CVEufk9Tsu5OezEnlz6xhebvcRfb58DNa9b16onUa0bEFF+2DOzyH5DDi0FZY9D2Mfa9kaQl3mF/Dhz8wILCrJ9H8/vR/aD4DOo8wbY1Sy+YpOhrgu4Eow5y4QDbNriXkjzdkIPcaaDyHuWgJLnjUB6IyHi/8O/a84ch+vB965FvavhalvQ+/xxz7uj+4Bu8v8f82aCtd9aI5TdbKqKmDpP00t3gpTxzkPmNfDv4bDnHvg5nkQ1sCpy93LYNGfYcAUGHwtaL/ZG/n0AWjXH1KGmrbQmpnmjaq8wPzsyS9A13NOvv5GaEjQ1/VKb2hTq0H3VUpNA6YBpKWlNfChgysm0s7LN6TzxKdRTFjalrs7ns8vyl/G9upYGHYTXPA78wJqbn4//PcO8FWaP5SvnoCVr8DZ95qgsorCveaNtOt5kDqs4ffz+8zo8pu/QrsBZkSY0A0OZcLWz2DLZ5DxBlSVHXvfiDYQ39lsP/Ie6DS86Z7P6c7vh5JsyNtuRrK7voUNH0JsJ7h6ptmrrH6T9JTC3u/MqHn2zbDpfzDx7+CMgw9uhZ3fwKUv1h3y1YbfYoJ07gOQOd/skZ2MrfPgswehYKc5F8WYRyCp55Hbxz8JH02DVa/CiJ8dfd8NH8H6D6DLudDnx9Cmg5l8/eBWiOsMlzxtnquywRWvwvTz4N3r4coZ8NUfzYg/baR53K+egNcvgTPvgAsfPXbvxFfVLF0BpU8wEaGUGgn8QWs9LnD5YQCt9V/q2PY/wCda69mBy9cAo7XWtwUuvwQs0lrX27pJT0/Xq1atOrVnEyTvrdzLI3PWk+yo4p2ei0jZ8pp5J2/f34wWu4wyu67OZpieWPpPM1r48XMw7EY4sB5ePBtGPwyjj5k3bx4Fu80IqznaIIe2mbmHte+YlosKnEfgvF8f/w/CnQ87v4aVr5o/tCHXwcS/1b/bX+kG9yEoy4WSg1Cwy4RCwS4z6V5RBJOfh4FXNf1zDHWVZbAvAw5ugIPrzL85m8Fbowdvj4KzbjcjZIer7sfxeWHJM7DoSfO3kJoOW+bCuD/DyLtOXIevCp4dBIk94MY5Dau9cA/M/bV5U0/qBROegu7nH7ud1vDWFeYN6c7lENfJ1PvlH8zfWGQcVBQCCtLOMtvvWw23zDcj95qyv4dXx4HPAxGxcNHjMOQGs6dQWWbmBVa8ZJ5HyjAo2Q8lB8xXu/5w82cNe261KKVWa63T67ytAUEfDmwFxgD7gJXAtVrrDXVs+x+ODvoEYDVQ/ZvIAIZV9+zrcjoGPcDWgyXcOTOD7bmlPDpCcX3cOmx7voW9K8xuYpjdjHKG3gDdzm/47uHx7F8LL19gzoF79VtHRlCzroHdS+EX65u/H1hVDs8NMd/fuaxhb2Z+H8z7DXQ6E/pfXvc2ZXlmYmvDh2BzwNAbYdhPTW/1h1nQYRBcNt30VLU2Kx8OroeslbD9KxNMaIiMhYv+BEOvP/Xn6M6Hd6+D3UvMG+h5D564peP3Q1mO2RMp2mPaa844c0jstn3M5zROB5kLzKqXksCCA1eSGcC07WuCKrG7+TemY8Nf0wfWwUd3mDeNUb80I9uGWvx3+PJxE8Zt+xx/2x2L4P2fmknc0Q+aUXS4o/7tC3bDC2eZgdmlL8Lsm8xgYfjPzJtRwU4zF7bxY/NaG/cXGHln3Y+1cY55HY5+yBw08Zjavjav7yo3xHQw20S3N88p/aaG/jaO0qigDzzAROAZwAbM0Fr/SSn1OLBKaz1HKTUc+AiIByqAA1rrfoH73gz8JvBQf9JaH3dZyOka9ADuSi+PfryB91dn0TE2khFdExiRFs0o5x46HfgCtfZdKM83kz+Dr4Nuo6HDwONPLhVnw/aF5kWzfw2EhZuQCI80o02UCdiabZqs1fDKBTD2cdPCaU7VexQqDAZeDZe9eOL7fPGoGdnZIuDWBeZ3UJPPC29eat4kz7odRt599OTyxjnwyX2mJZA63PSEywNjB2UzI8XuF5ivjkPB1pAO5Ql4K+F/98IPb5sT1kz615EJw5o8pbDsX2aexFPPMZLCws18SlIv095zJUFUIrRJNa+Juh63pXlKYP7vYfVrptYL/2B+l9Ftm2bewltpXs+pw0/u8cry4B99YdBUMx9WF61h+QvmdZnUG6bONG9IDbHsBZj3sBmwVLrhkn/AkJ8cu507P+Rao40O+pZ0Ogd9tbnr9vPJ2mxW7iogt8Ssq23fJpLfjuvGJY7VqIw3zEgBzB99u/4mnCJizK5dZZn5Qzu0FXIDpzaMamsmeVWY6cd7K8wL+vzfmF3J2t6YDAc3wn1rG79KoT6eErMr3X6g+YP95ilzULjj9U/Xf2hGSgOnmt+B3QW3fX30nseCP5h2zeQX6v4jA9Nemfcw5O80E6rVX+36Nd9ejNZmMu3LxyE2DfpOgr6TISUd0PD9W7DwT1B6EM64xIR2bCfTBmiTAu48OLDW7IkdWGtqdx8ybaFqkXEmxIbeaCYzG6Nwj1lu23GIqbWhz3HXYvj4bnP/H90D5/82NN58qn18N6ybDb/ceGzYVpWbN+S175r/g8tePLnXg98Hr02Eor1w9ZumtXKakKAPEq01e/LdrNiZz5vLd7M2q4gzuybw+OT+9I5ymzbDvlWQtcr09bwV4Ig2XxHRJhy6jTYj03b9Tm7ks3OxmfSZ+DczCeT3Q2Wp2VV0Jhx/F7ahvv4rLHwCbv3KhOzL55se953L6x7tHNwAr1xotr3xE8haAa//2Kx+uPxl8/w2f2pWYQz7af0jtmDbOh9WTDetAX+VaVs4oiAvE1JHwEVPQFpDF6Zhes/uPLNn8v1bZrLSV2neQNp0MHsJlWXm/y8qyUxIdzsfOg6ue/VJ9vew9F9mElH7zHXn3A/n/67+9kredhOe62ebAUZ8F9O+6DzyZH87za96HurCx2DUfUeud+ebZZr7Vpvnes79p9Yi9XoA1TR/Iy1Igj4E+Pyad1fu5al5mymp8HLDyM7cO6Ynca7Ai0nrpl3KpzXMGGcmEu2RUFHMkQVPyuyCt+lo3kzsTrO99pttItqYdkqHweYNpq49gvICeGaQ6WdeE/ic3P61Juz7XQ5XvHzs9tPPNyOu274+0rf8+ikzCp70L7Peevpos5t90+ehNYqsS3mhWc2xaY5psY26z6zoaOz/Y1memYdY974JHUeUeeN3RJs+8sF1ZrvIWDNat9UIJHeeCTpHjJmcH36L2TvKeAN6TYDLp0NkmyM/Z/1s+OEdyM4w13UeBQOuMG04R1Tjnkdz+s8lpnX58zWmNVeWB29ONodOuPI16HNJsCtscRL0IaSgrJK/zd/C2yv2EB0Rzu3ndeems7vgcjRBH7m27DVm5OmIMqEQGWtCuywPirNMOBXtM3sSKiwQUMqMyisKzWMom5l8G/Mo9Bhz5LEXPGYC5I4l5s2g2qInzXLGq143k62lB83X8n+bJXg3zT36cwZ+H7x5menHx6aaVsZt35h5DFG30lzT9tqxyOwl1VyxHBZu2klDbzD/32DexFe8DJ8/ZJYUnn2f2WvInGdWMrUfYNaC97/89PkA2aZP4N2fwJQ3zNLFNyZD/g7Tj+9xYbCrCwoJ+hC0+UAxf5u3hQWbckiOieDnY3pydXonHOEhcJw5rU2Pcv8P5mv9h5C/3Yzyxv3ZjPyfHWQ+SXjlq0ff11dlRvUH1tV6UAU/fsa0ZGorOQgvjjJvMNfNbrV/qM1ux9fw/o1m7yqqLQycAoOuMW/kpxu/D54dbCaxK8ugKMvMD3U7L9iVBY0EfQhbtSuf//t8Myt3FdC+TSTXj+zMtSPSiI8Kof5gVYVZ1vbtP8zEVvv+5hOPd6+sezVDURasfc8sJ4xuZ75iU+teZlYtZ5NZitjrouZ7HsIclyl/uzkcQVOsRgqmJc/BF783La1r3zOfVWnFJOhDnNaar7fm8uq3O1mceYiI8DAuH5rCzWd3pWe7lj8uRr1yNpkVDXu/gyHXw+R/Bbsi0ZpVFMFnD5l15y192JEQJEF/Gtl6sITXluziw4wsPF4/Ewe05+djenJG+zbBLs3w+2H7l6YvWtcBqoQQQSFBfxrKL6tkxrc7+RK/u6YAABHXSURBVM/SXZR6vIzv1557xvSgX8fYYJcmhAhBEvSnsUK3CfzXluyiJBD4940NoRG+ECIkSNBbQFF5Fa9+u5PXvt1JicfLxQM7cN+YnqHVwxdCBI0EvYUUuit5ZfFOXluyE3eVj9G9krkqvRNj+rQlIvwUjtEthLAECXoLyi+r5D9LdvLeqiwOFFcQ77Jz6ZAUfjyoI4NS47CFyQkzhGhNJOgtzOfXLM7M5f1VWczfeIAqn6ZNZDgjuycyqmcyo3sl0ymhnuODCyEs43hBf5p/YkLYwhSje7dldO+2FLor+SbzEN9m5vJt5iHmbTgIwDk9k7h2RBoX9m2H3RYCn7wVQrQoGdFblNaanYfK+HTtfmat2EN2UQXJMRFcnd6JS4ek0KOtrIEXwkqkddPK+fyaRVtymPndHhZuyUFrOKN9DJcM7MDEAR3oliyhL8TpToJeHHagqIK56/bz6br9rN5dAEBagoshaXEMTYtnaFo8Z3SIkRaPEKcZCXpRp+zCcj5ff4AVO/PJ2FNATuBsWE67jUGdYknvnMCwLib8Y51Nf2Z6IUTTkaAXJ6S1JruogozdBWTsKWDVrgI27i/G59eEKUjvksBFfdsxtm87OieG8AkphGilJOjFKSnzePlhbyFLt+exYNNBNh8oAaBn22gGd4qjZ7toerSNpkdyDJH2MHJKPOSWesgt9hDpsHHxgA6ynl+IFiJBL5rE3nw3X2w8yMItOWzaX8KhUs9xtx/UKY7/u2LAMcflWbkrn+nf7GBwpzjuOK87YfJmIESjSdCLZlHormRbTinbckqp8vlJjokkOSaCtjERZOwp4PH/baSovIo7Rnfn7gt6kLG7kOe+zGTZjjyiHDbKKn2M7duOp6cMIiZS5gCEaAwJehEU+WWVPPHJRj78fh+xTjtF5VW0jYng9vO6c82INN5ZuYcnPt1El0QX029Ip7ss8xTilEnQi6BatCWHN5bt5tyeSUwdkUak/cjB15bvyOOumRlUev3cfUEPnA4bVT5Nlc9PRZWPvNJKDpV6yC3xUOCupEfbaEb1TOacHkl0TnShlLR9hAAJehHi9hWWc8dbq1mbVXTMbXEuO8nRESRFR9DGGc76fcXsKywHIDXeyejeyYzv14EzuyXI2n/RqknQi5Dn92tySz2EhynCbWE4bGHYbeb7mrTW7Mpz821mbuC4Pocor/IR67RzYZ92jOvXjlE9k3A55DBOonWRoBeWVVHl45utuXy+4QALNh6kuMKLIzyMs7olckHvZM7plQyYieOCsioK3JWEKYXLYcMVEU6Uw0ZKvJMOsc4gP5Pmsb+onFinXd74WgEJetEqVPn8rNiZz1ebc1i4OYcdh8oafN8RXRO4fEgKEwd2oI1FVgB9m3mIW99YycDUON752VmyjNXiJOhFq7TzUBkrduYREW4jzmUn3uUg3uUAoKzSi7vSR5nHy9qsQj78fh87csuICA9jdO9kerdvQ1qCi7QEF50SnHh9mqLyqsNfKXFOBqbGNmgyeF1WEf/3+Wa6JkXxq/G9W+SN5OutuUx7YxUxkeEcKq3kj5P7cf3ILs3+c0XwSNALcQJaa37IKuKjjCwWbMohu6icE/1pnNE+hmvPTGPy4JQ6jwVUUFbJX+dvYdaKPcQ67RSXV9E2JpI/XdafMX3aNdMzgYWbc7jtrdV0T47mrVtGcN+7a8jYXcC8X5xLarychMaqJOiFOEmVXj/7CsvZk+8mq8CN3RZGrNNOrNNOm0g7a/YW8vaK3azfV0ykPYzze7elQ6yThCg78VEO3B4fzy/aRkmFlxtHduG+sT3ZkVvGg7PXsuVgCZMGdeS+C3uigfLAnkW4TTGkU3yjWiwLNh7kzpkZ9GofzVu3nEmcy8HefDfjnvmG9C4JvH7TcFmSalES9EI0k3VZRcxauYfFmbnkl1ZSVuk7fNuIrgk8PrnfUYeAqPT6efHr7fzzq0yqfMf+7fVPacND4/swqmfSSdVRUFbJP7/axhvLdtG3YxvevPlMYl1H9jJeX7qLR+ds4G9XDeLKYakn/0RFyJOgF6KFVFT5KHRX4a700jUpqt7R8/bcUlbuzMfpsOG024iKCGdfQTnPfpnJvsJyRvVI4sHxZzAgNRatNV6/xufX2G1hRx0orqLKxxvLdvGvr7ZR6vEyJb0Tv7m4zzHzAH6/5urpy9h6sJQvfnkubWMim/PXIIJAgl6I04TH62Pm8j3886tMCtxVhCnw1/gTVQriXQ4SoxwkRUewJ9/NvsJyRvdO5uEJfejdPqbex96eW8qEZxczLC2eP17ajx5t69/2dODzaz5Zm82wzvEy90ATBL1SajzwLGADXtFaP1nr9gjgDWAYkAdcrbXepZTqAmwCtgQ2Xa61vv14P0uCXggoqaji3ZV7KSqvwhamCA9ThIUpKqr85JV6yCutJK/Mg90Wxp2jezS41TNrxR7+MGcDHq+f0b2T+dk53fhR98SQ69trrXl58Q60hmnndquzvic/28yLX2/HFqaY0L89PzunG4M6xQWh2tDQqKBXStmArcBYIAtYCVyjtd5YY5s7gYFa69uVUlOBy7TWVweC/hOtdf+GFitBL0Tzyi+rZOby3by+bDeHSj30bBtNepd4ereLoXf7NpzRPoY4lz1o4e/za37/8Xre/m4PAPeP7cU9Y3oetc2cH7L5+azvuWJoKglRdt5ZsZcSj5cRXRJ4aOIZDE2LD0bpQdXYoB8J/EFrPS5w+WEArfVfamwzL7DNMqVUOHAASAY6I0EvREiqqPIx54dsPsrYx6YDxRS6qw7fFqbMKSWdjnBcDht2m8IWpghT5l+Xw0bnxCi6JkXRLSmKrsnm+4hw23F+4olVev384r01fLp2P7ef152ckgo+zNjHY5P6ceOPugCwfl8RV764lAEpscy89Swc4WGH94Be/XYnBe5KXro+nfMCn4puLY4X9A35XHQKsLfG5SzgzPq20Vp7lVJFQGLgtq5Kqe+BYuB3WuvFdRQ4DZgGkJaW1oCShBCNFWm3MSW9E1PSO6G1JqfEw+YDJWQeLKHQXUV5lQ93pY/ySi9VPjMZ7NMav19T6vGyODOX2auzDj+eLUzRNSkqsGcQQ0qck4RoM58Q73LgdNgo83gp9ZgPq1V5/bRtE0lqvJNIuw13pZfb38rgm625/GbiGUw7tzten5/SCi+PztlAdEQ45/VO5rY3VxPvcvDCT4bhCDfHQoqJtHPrOd24bEgK17+6gltfX8k/rxnK+P7tg/XrPaHswnKSYyJa5GB8DRnRXwWM01rfGrh8PTBCa31PjW02BLbJClzeDowASoForXWeUmoY8F+gn9a6uL6fJyN6IU4fpR4vuw6VsT23lMyDpWw+UMLWgyXsyXef1OMkRTsIDwsjp6SCJy8fyJThnQ7fVlHl45bXV7J8Rz7dk6PYnedm9u0/YkBqbJ2PVVRexU9fW8HarCL+ftUgLh2S0qjn2BxW7srnmunLOatbIjN+OvzwG1ZjNHZEnwV0qnE5FciuZ5usQOsmFsjX5l3EA6C1Xh14A+gFSJILYQHREeH0T4mlf8rRoeuu9JJT7CGvrJL8skoKyiqp8PqIcoQTFWGWk9rCFAeLK9hXUM6+wnJySzxMHd6fC/se/anhSLuN6den85NXvmPN3kKeuXpwvSEPEOu08+YtZ3Lr6yv5xXtr2F9UwZXDUkmOiWiW38HJOlhcwZ0zM4hz2fl22yF+NfsH/jFlcLMei6ghI/pwzGTsGGAfZjL2Wq31hhrb3AUMqDEZe7nWeopSKhkT+D6lVDdgcWC7/Pp+nozohRB1KfV42XqwpMETrRVVPu6cmcFXm3MA6NexDef1SuZH3ZOIc9mJtNuItIfhtNtIiHK0yORzpdfP1OnL2HyghP/edTZfbDzIX+dtYdq53fjNxD6NeuxGjegDPfe7gXmY5ZUztNYblFKPA6u01nOAV4E3lVLbgHxgauDu5wKPK6W8gA+4/XghL4QQ9YmOCD+p1TSRdhuv3JDOxv3FfL01l6+35PLSNzt4YdH2Oh+7d3szt9CnfQwd45xEhNuIsIcRER6Gy2EjMSqi0auRHvvfBjL2FPL8tUPp1S6Gnm2jySmuYPo3O2gbE8Gt53Q75cc+HvnAlBCi1SiuqGJdVhGlHi8VVT48VX7KKs08w6YDJWzeX0xxhbfe+9ttisSoCJJiHDjtNuy2MBzh5kQ5HeOc9OvYhn4dY+nZLvqYSdb3Vu7l1x+s5bZzu/FwjdG7z6+5Z1YGc9cd4Nmpg5k8+NTmFBrboxdCCEtoE2nn7B71f7hMa83+ogpySjxUev14vD4qvX7KKn0cKvGQGzh/cV6ph4oqPx6vn1KPF0+Vn2+3HcIdONaRwxZGSryT6sG/Avbkuzm7RyK/Gtf7qJ9pC1M8PWUweaUrmLFkF5cM7HjUYS6aggS9EEIEKKXoGOekY9zJn3HM59fsPFTGhuwiNmQXk11YzuF+iYYRXU3I1z49JgQmnG9IJ0zR5CEPEvRCCNEkbGGKHm2j6dE2+pTaL3Wd06CpNP9KfSGEEEElQS+EEBYnQS+EEBYnQS+EEBYnQS+EEBYnQS+EEBYnQS+EEBYnQS+EEBYXcse6UUrlArsb8RBJwKEmKqe5nS61ni51gtTaXKTW5tGUtXbWWtd5Wq2QC/rGUkqtqu/APqHmdKn1dKkTpNbmIrU2j5aqVVo3QghhcRL0QghhcVYM+unBLuAknC61ni51gtTaXKTW5tEitVquRy+EEOJoVhzRCyGEqEGCXgghLM4yQa+UGq+U2qKU2qaUeijY9dSklJqhlMpRSq2vcV2CUuoLpVRm4N+Gn/W4GSmlOimlFiqlNimlNiil7g1cH3L1KqUilVIrlFI/BGp9LHB9V6XUd4Fa31VKOYJdK4BSyqaU+l4p9UngckjWCaCU2qWUWqeUWqOUWhW4LhRfA3FKqdlKqc2B1+zIEK2zd+B3Wf1VrJS6r6VqtUTQK6VswPPABKAvcI1Sqm9wqzrKf4Dxta57CPhSa90T+DJwORR4gfu11n2As4C7Ar/LUKzXA1ygtR4EDAbGK6XOAv4P+Eeg1gLgliDWWNO9wKYal0O1zmrna60H11jnHYqvgWeBz7XWZwCDML/fkKtTa70l8LscDAwD3MBHtFStWuvT/gsYCcyrcflh4OFg11Wrxi7A+hqXtwAdAt93ALYEu8Z66v4YGBvq9QIuIAM4E/NJw/C6XhtBrC818Id8AfAJ5nzRIVdnjXp3AUm1rgup1wDQBthJYFFJqNZZR90XAUtaslZLjOiBFGBvjctZgetCWTut9X6AwL9tg1zPMZRSXYAhwHeEaL2BdsgaIAf4AtgOFGqtvYFNQuW18Azwa8AfuJxIaNZZTQPzlVKrlVLTAteF2mugG5ALvBZoib2ilIoi9OqsbSowK/B9i9RqlaCv67Tpsm60EZRS0cAHwH1a6+Jg11MfrbVPm93hVGAE0KeuzVq2qqMppS4BcrTWq2teXcemofSaPVtrPRTTDr1LKXVusAuqQzgwFPi31noIUEYItGmOJzAPMwl4vyV/rlWCPgvoVONyKpAdpFoa6qBSqgNA4N+cINdzmFLKjgn5mVrrDwNXh2y9AFrrQmARZl4hTikVHrgpFF4LZwOTlFK7gHcw7ZtnCL06D9NaZwf+zcH0kkcQeq+BLCBLa/1d4PJsTPCHWp01TQAytNYHA5dbpFarBP1KoGdgFYMDs2s0J8g1ncgc4MbA9zdieuFBp5RSwKvAJq310zVuCrl6lVLJSqm4wPdO4ELMZNxC4MrAZkGvVWv9sNY6VWvdBfPa/Epr/RNCrM5qSqkopVRM9feYnvJ6Quw1oLU+AOxVSvUOXDUG2EiI1VnLNRxp20BL1RrsiYkmnOCYCGzF9Gh/G+x6atU2C9gPVGFGIbdgerRfApmBfxOCXWeg1lGYFsJaYE3ga2Io1gsMBL4P1LoeeCRwfTdgBbANs4scEexaa9Q8GvgklOsM1PVD4GtD9d9TiL4GBgOrAq+B/wLxoVhnoFYXkAfE1riuRWqVQyAIIYTFWaV1I4QQoh4S9EIIYXES9EIIYXES9EIIYXES9EIIYXES9EIIYXES9EIIYXH/D/zMAashq/5XAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.03107928 0.0066627  0.01680933 0.03387405 0.04726727 0.02927793\n",
      " 0.1103809  0.3055091  0.10135297 0.02490097 0.02948629 0.03471329\n",
      " 0.08417169 0.03560009 0.02136175 0.02555364 0.04271481 0.01928325]\n",
      "0.99999934\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1440x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "model_types = ['basic','att1','att2','att3']\n",
    "model_type = model_types[3]\n",
    "merge_types = ['avg','concat']\n",
    "merge_type = merge_types[0]\n",
    "train(train_x,train_y,test_x,test_y,feature_cnt,feature_max,model_type,epochs,merge_type,dim)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
